1、springboot自动配置原理?
两方面:
1.从注解:
- 核心启动类标注了@SpringBootApplication,是一个组合注解
- 包含了@EnableAutoConfiguration
- @EnableAutoConfiguration底层借助了@Import注解
- @Import(AutoConfigurationImportSelector.class)导入了AutoConfigurationImportSelector
- AutoConfigurationImportSelector类的方法在执行过程中会加载META-INF/spring.factories
-
根据下图中EnableAutoConfiguration这个key加载到后面那些自动配置工厂类的全路径,再经过过滤,将真正需要生效的工厂类保存起来
image.png
上述只是将配置类加载保存起来,那么具体是在哪一步完成这些配置类的实例化并存入容器中的
2.从run方法:
- 在springboot文章中的run方法第四步,prepareContext方法,将启动类实例化并加载到容器中
- 在springboot文章中的run方法第五步,其实就是springioc容器初始化的refresh()方法,在这里springboot的工作基本就完成了,生成bean并放入容器中的工作都是由spring来完成的,springboot某种意义是spring的包装
网友评论