自动配置原理分析
2023-04-23 11:51:59 13 举报
AI智能生成
SpringBoot 自动配置原理流程图
作者其他创作
大纲/内容
@SpringBootApplication
@SpringBootConfiguration
@Configuration
@Component
@EnableAutoConfiguration
- 自动导入包
- 自动导入包
@AutoConfigurationPackage
- 自动配置包
- 自动配置包
@Import({Registrar.class})
- 自动注册包
- 自动注册包
@Import({AutoConfigurationImportSelector.class})
- 自动导入包的核心
- 自动导入包的核心
AutoConfigurationImportSelector
- 自动导入选择器
- 自动导入选择器
getAutoConfigurationEntry()
- 获取自动配置的实体
(调用的下边这个方法)
- 获取自动配置的实体
(调用的下边这个方法)
getCandidateConfigurations()
- 获取候选的配置
(调用的下边这个方法)
- 获取候选的配置
(调用的下边这个方法)
getSpringFactoriesLoaderFactoryClass()
- 获取标注了 @EnableAutoConfiguration 注解的类
- 获取标注了 @EnableAutoConfiguration 注解的类
loadFactoryNames()
- 获取所有的配置名
(调用的下边这个方法)
- 获取所有的配置名
(调用的下边这个方法)
loadSpringFactories()
- 加载
- 加载
classLoader.getResources("META-INF/spring.factories")
- 获取项目的资源文件
- 获取项目的资源文件
META-INF/spring.factories 文件在
spring-boot-autoconfigure.jar 包中
所有的自动配置类都在该文件中
spring-boot-autoconfigure.jar 包中
所有的自动配置类都在该文件中
问 : 为什么有些自动配置类没有生效,
需要导入对应的启动器才能生效?
答 : 自动配置类上有一个
核心注解 : @ConditionalOnXXX(xxxxx)
表示只有括号中的条件都满足才会自动导入
需要导入对应的启动器才能生效?
答 : 自动配置类上有一个
核心注解 : @ConditionalOnXXX(xxxxx)
表示只有括号中的条件都满足才会自动导入
ClassLoader.getSystemResources("META-INF/spring.factories")
- 获取系统的资源文件
- 获取系统的资源文件
while 循环,遍历了所有的资源文件,
遍历完成后,将其封装为 Properties ,以供使用
遍历完成后,将其封装为 Properties ,以供使用
@ComponentScan
- 扫描当前主启动类同级的包
- 扫描当前主启动类同级的包
觉得不错,请点个赞吧,谢谢
0 条评论
下一页