SpringBoot
2021-06-17 15:56:49 0 举报
AI智能生成
SpringBoot自动装配
作者其他创作
大纲/内容
自动装配原理
@SpringBootApplication:SpringBoot应用
@SpringBootConfiguration:SpringBoot配置
@Configuration
@Component
@EnableAutoConfiguration:自动导入包配置
@AutoConfigurationPackage:自动配置包
@Import({Registrar.class}):自动注册包
@Import({AutoConfigurationImportSelector.class}):自动导入包的核心
AutoConfigurationImportSelector:自动导入选择器
getAutoConfigurationEntry():获得自动配置的实体
getCandidateConfigurations():获取候选的配置
参数(返回标注有EnableAutoConfiguration注解的类):
protected Class<?> getSpringFactoriesLoaderFactoryClass() {
return EnableAutoConfiguration.class;
}
protected Class<?> getSpringFactoriesLoaderFactoryClass() {
return EnableAutoConfiguration.class;
}
loadFactoryNames():获取所有的加载配置
其配置的自动导入并没有生效,需要导入对应的start才能生效
spring-boot-autoconfigure-2.2.1.RELEASE.jar
META-INF
spring.factories
spring-boot-autoconfigure-2.2.1.RELEASE.jar
META-INF
spring.factories
核心注解:
@ConditionalOnXXX
只有在其中的条件都满足时,才会生效
@ConditionalOnXXX
只有在其中的条件都满足时,才会生效
具体可参照:
WebMVC的:
@ConditionalOnClass({Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class})
WebMVC的:
@ConditionalOnClass({Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class})
loadSpringFactories()
从资源中获取:classLoader.getResources("META-INF/spring.factories")
从系统中获取:ClassLoader.getSystemResources("META-INF/spring.factories")
从这些资源中遍历所有的元素(自动配置)
@ComponentScan:扫描包的位置及各种过滤条件
收藏
收藏
0 条评论
下一页