自动配置原理分析
2020-04-11 17:17:18 0 举报
AI智能生成
思维导图,Springboot自动配置原理分析
作者其他创作
大纲/内容
@SpringBootApplication :主程序
@SpringBootConfiguration
@Configuration
@Component
- @EnableAutoConfiguration :自动导入包
@AutoConfigurationPackage
@Import(AutoConfigurationPackages.Registrar.class) :自动注册包
@Import(AutoConfigurationImportSelector.class) :自动导入包的核心
AutoConfigurationImportSelector:自动导入选择器
getAutoConfigurationEntry() :获得自动配置的实体
getCandidateConfigurations() :获取候选的配置
protected Class<?> getSpringFactoriesLoaderFactoryClass() {
return EnableAutoConfiguration.class;
} //标注了EnableAutoConfiguration注解的类
(标注的这个类就是主启动类)
return EnableAutoConfiguration.class;
} //标注了EnableAutoConfiguration注解的类
(标注的这个类就是主启动类)
public static List<String> loadFactoryNames(Class<?> factoryType, @Nullable ClassLoader classLoader) {
String factoryTypeName = factoryType.getName();
return loadSpringFactories(classLoader).getOrDefault(factoryTypeName, Collections.emptyList());
} //获取所有的加载配置
String factoryTypeName = factoryType.getName();
return loadSpringFactories(classLoader).getOrDefault(factoryTypeName, Collections.emptyList());
} //获取所有的加载配置
loadSpringFactories()
classLoader.getResources(FACTORIES_RESOURCE_LOCATION)
//项目资源
//项目资源
META-INF/spring.factories
(从这里获取配置文件)
(从这里获取配置文件)
spring-boot-autoconfigure-2.2.6.RELEASE.jar
META-INF
spring.factories
所有的自动配置类
都在这里了
所有的自动配置类
都在这里了
核心注解@ConditionalOnxxx :
如果这里面的条件都满足才会生效
如果这里面的条件都满足才会生效
需要导入对应的start才能生效
ClassLoader.getSystemResources(FACTORIES_RESOURCE_LOCATION));
//系统资源
//系统资源
META-INF/spring.factories
(从这里获取配置文件)
(从这里获取配置文件)
spring-boot-autoconfigure-2.2.6.RELEASE.jar
META-INF
spring.factories
所有的自动配置类
都在这里了
所有的自动配置类
都在这里了
核心注解@ConditionalOnxxx :
如果这里面的条件都满足才会生效
如果这里面的条件都满足才会生效
需要导入对应的start才能生效
从这些资源中遍历了所有的nextElement(自动配置)
遍历完成之后封装为Properties
供我们使用
供我们使用
@ComponentScan :扫描当前主启动类同级的包
0 条评论
下一页