SpringBoot自动装配
2022-07-13 16:28:04 0 举报
AI智能生成
SpringBoot自动装配详解
作者其他创作
大纲/内容
@SpringBootApplication
@SpringBootConfiguration
@Configuration
@Component
@EnableAutoConfiguration :自动导入包
@AutoConfigurationPackage:自动配置包
@Import({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) {
ClassLoader classLoaderToUse = classLoader;
if (classLoader == null) {
classLoaderToUse = SpringFactoriesLoader.class.getClassLoader();
}
String factoryTypeName = factoryType.getName();
return (List)loadSpringFactories(classLoaderToUse).getOrDefault(factoryTypeName, Collections.emptyList());
} 获取所有的配置名
ClassLoader classLoaderToUse = classLoader;
if (classLoader == null) {
classLoaderToUse = SpringFactoriesLoader.class.getClassLoader();
}
String factoryTypeName = factoryType.getName();
return (List)loadSpringFactories(classLoaderToUse).getOrDefault(factoryTypeName, Collections.emptyList());
} 获取所有的配置名
loadSpringFactories():从哪里获取配置
获取配置:classLoader.getResources("META-INF/spring.factories");
spring-boot-autoconfigure-2.7.1.jar/META-INFspring.factories:所有的自动配置类都在这里面
这么多自动配置为什么有的没有生效,需要导入对应的starter才能生效
核心注解:@ConditionalOnXXX
如果这个注解里面的条件都满足,才会生效
遍历配置(自动装配),将其封装入Properties类中
@ComponentScan:扫描当前主启动类同级的包
收藏
0 条评论
下一页