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