自助建网站信息发布企业,大连seo顾问,中石化第四建设公司 网站,asp net网站开发一、启动类#xff08;引导类#xff09;
在通常情况下#xff0c;你创建的Spring应用项目都会为你自动生成一个启动类#xff0c;它是这个应用的起点。 在Spring Boot中#xff0c;引导类#xff08;也称为启动类#xff0c;通常是main方法所在的类#xff09;是整个…一、启动类引导类
在通常情况下你创建的Spring应用项目都会为你自动生成一个启动类它是这个应用的起点。 在Spring Boot中引导类也称为启动类通常是main方法所在的类是整个应用程序的入口点用于引导和启动Spring Boot应用。它主要用来加载Spring的上下文、自动配置并启动内嵌的服务器。 1.1 启动类重要注解
一个经典的SpringBoot启动类如下代码所示
SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}SpringBootApplication注解是Spring Boot启动类的核心它包含了三个重要注解
SpringBootConfiguration这个注解实际上是Configuration的派生注解表示该类是一个Spring配置类可以定义Bean方法。Spring会将这些方法返回的对象作为Bean添加到应用上下文中。EnableAutoConfiguration这是Spring Boot的自动配置核心通过这个注解Spring Boot会根据项目中引入的依赖自动配置各种组件。例如如果项目中有spring-boot-starter-web依赖那么Spring Boot会自动配置一个Web环境包含内嵌的Tomcat服务器、DispatcherServlet等。ComponentScan这个注解会扫描指定包及其子包下的所有Component、Service、Repository、Controller等注解将它们作为Bean加载到Spring的上下文中。默认情况下它会扫描引导类所在包及其子包所以通常建议将引导类放在项目根包下。 1.2 SpringApplication.run的功能
在引导类中SpringApplication.run(Application.class, args)用于启动Spring Boot应用它执行了多项初始化工作具体包括以下几个步骤 初始化SpringApplication对象SpringApplication类会根据应用的类型通常是SpringBootServletInitializer或SpringApplication决定启动方式。这个类会加载各类初始化器ApplicationContextInitializer和监听器ApplicationListener同时准备一些默认设置。 启动引导和环境配置Spring Boot会初始化Environment对象加载系统属性、环境变量以及应用配置文件如application.properties或application.yml将这些内容加载到Spring上下文环境中。 创建并配置ApplicationContext根据应用的类型选择具体的ApplicationContext类型一般是AnnotationConfigApplicationContext或WebApplicationContext用来管理应用中的所有Bean。 自动加载Spring Boot特性通过EnableAutoConfigurationSpring Boot会扫描所有自动配置类通常是位于META-INF/spring.factories文件中的Configuration类自动配置相应的组件如数据库连接池、数据源、JPA配置等。 启动内嵌Web服务器如有如果是Web应用Spring Boot会启动一个内嵌的Web服务器例如Tomcat或Jetty并将DispatcherServlet等必要的组件注入到应用上下文中使应用可以接收和处理HTTP请求。 启动ApplicationRunner和CommandLineRunner如果应用中有实现了ApplicationRunner或CommandLineRunner接口的类Spring Boot会在启动完成后运行这些类中的run方法。它们常用于在应用启动后执行一些初始化任务。 1.3 引导类的实际运行机制
整个引导类运行的关键在于SpringApplication.run()方法它的运行机制大致如下 加载监听器Spring Boot使用各种事件来驱动应用启动流程例如加载ApplicationStartingEvent、ApplicationPreparedEvent等一系列事件在应用生命周期的不同阶段进行通知。你可以创建自定义的监听器来监听这些事件。 设置默认属性Spring Boot会根据项目结构和配置文件设置默认属性例如端口号、环境配置、日志配置等。你可以在application.properties或application.yml中进行自定义。 创建上下文和刷新上下文Spring Boot会创建应用的ApplicationContext并刷新它。ApplicationContext会自动管理所有Spring组件和Bean的生命周期注入相应依赖并准备服务。 调用生命周期钩子和运行应用在上下文加载完成后Spring Boot会调用所有实现SmartLifecycle接口的组件执行它们的启动逻辑。之后启动内嵌的服务器监听请求端口应用正式启动并进入运行状态。 1.4 使用引导类的配置和扩展
你可以通过自定义SpringApplication来更细粒度地控制Spring Boot的启动行为
设置Banner可以通过SpringApplication.setBanner()或在application.properties中配置自定义启动Banner。配置监听器可以通过SpringApplication.addListeners()方法添加自定义监听器来捕获启动过程中不同阶段的事件。配置初始化器通过SpringApplication.addInitializers()方法自定义上下文的初始化行为。 可能看到这里的同学有点蒙关于基础篇里面我们只需要知道启动类大致干了点啥就行究竟是怎么干的为什么这么干的这属于核心原理了到时候放在原理那里讲解上面每一个小点单独拉出来讲都要参考无数篇文献都能写一个万字以上的论文对于基础来讲无须理解那么多知道有这么个东西为主。 那么现在启动main方法同时启动了内置的服务器核心注解中的EnableAutoConfiguration有相关依赖的话这样我们整个程序就运行起来了。
二、配置
2.1 application.properties
这是Spring Boot最常用的配置文件位于src/main/resources目录下。文件名一般为 Spring Boot会根据这些配置文件自动加载相关属性。如果上述三个文件中关于某一项的配置全部存在例如port则其优先级顺序为 常见配置项 服务器端口server.port8080修改服务器端口 数据源配置
spring.datasource.urljdbc:mysql://localhost:3306/dbname
spring.datasource.usernameroot
spring.datasource.passwordroot日志配置logging.level.com.exampleDEBUG设置日志级别 邮件配置spring.mail.hostsmtp.example.com 2.2 多环境配置
Spring Boot支持根据环境自动加载不同的配置文件例如application-dev.properties、application-prod.properties等。通过spring.profiles.active来指定当前环境
spring.profiles.activedev例子如下 他在目录中就会有两个配置文件其中的yml可以如上图所示在需要参数的地方以变量名称占位在dev文件中填写具体的参数区分开开发环境参数与运行环境参数。 yml中 dev中 作为配置来讲重中之重就是后面有一个空格如果没有空格则配置均会失效
2.3 读取配置文件中的参数
使用Value(“${}”)注解即可从配置中读取参数赋值给变量用例如下 用例代码这里注意括号中的变量名称需要与配置相同但是具体的变量名不需要与配置中的变量名相同 输出 2.4 配置文件中引用属性 2.5 使用类封装属性
使用ConfigurationProperties这个注解完成对类的封装用例如下所示 配置文件 类文件 输出