Springboot自动配置原理
springboot通过@SpringBootApplication引入@EnableAutoConfiguration, 这个注解主要负责自动配置功能, @EnableAutoConfigation中有个@Import注解, 这个注解可以解析所有jar包的/META-INF/spring.factories文件, spring.factories的类路径都是可自动配置的, 凡是被配置的类路径都会被解析并加载到ioc容器中, 这个配置文件也便于我们扩展,
@SpringBootApplication
@EnableAutoConfiguration
@Import
DeferredImportSelector
为什么说便于扩展呢?
在@Import注解中, 有一个deferredImportSelector类, 他会使得springBoot自动配置类的顺序在后, 在springboot中,有个@Conditional注解, 可以在一定条件下判断是否加载自动配置类, 如果自动配置类先加载, 那么@Conditional就不起作用, 无法更好的扩展覆盖
SpringBoot启动原理
springboot是如何启动的, 在Application中首先进行初始化阶段, 就是最开始的new阶段, 他从spring.factories中读取key结尾为listener的配置类, 他们是ApplicationListener监听器以及应用上下文的初始化器ApplicationContextInitializer
@SpringBootApplcation
public class Application{
public static void main(String[] args){
SpringApplication.run(SpringApplication.class,args);
}
}
在创建spring容器的时候需要传入一个配置类, 他会把我们当前的启动类Application作为配置类传入进行初始化