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 条评论
 下一页
  
  
  
  
  
  
  
  
  
  
  
 