SpringBoot启动原理!
SpringBoot启动原理!
月伴飞鱼自动配置原理
Spring启用全自动配置功能的注解就是
@EnableAutoConfiguration
,应用添加了@EnableAutoConfiguration
注解之后。会读取所有jar包下面的
spring.factories
文件,获取文件中配置的自动装配模块,然后去装配对应的模块。
@EnableAutoConfiguration
的功能可总结为:
- 使Spring启用
factories
机制导入各个starter
模块的配置。
启动流程
构造SpringBootApplication对象
和执行run方法
。核心注解
@SpringBootConfiguration
标识启动类为配置类。
@EnableAutoConfiguration
通过内部@Import
注解AutoConfigurationImportSelector.class
实现自动装配。
@ComponentScan
默认扫描当前目录及子目录下的Bean。SpringBootApplication的构造方法主要做了几件事:
- 根据是否加载servlet类判断是否是web环境。
- 获取所有初始化器,扫描所有
META-INF/spring.factories
下的ApplicationContextInitializer
子类。- 通过反射拿到实例,在spring实例启动前后做一些回调工作。
- 获取所有监听器,也是扫描配置加载对应的类实例。
run方法主要创建了配置环境、事件监听、启动应用上下文,其中refresh方法贯穿
springbean
的生命周期。执行bean的生命周期的前后置钩子方法,并且处理spring的注解标注的类。
在
onRefresh
中通过Java代码构建出tomcat容器并启动。