Springboot 自动配置
关注 “弋凡”(YiFan)微信公众号吧 记录简单笔记 做你的最爱
Springboot 是什么呐?
我管她是什么,好用就行了啊!!!
spring相信大家都用过了,那一堆的配置,用起来就麻烦,好比是饭面,但是你需要自己加调料啦
springboot 就是简化配置 好比一碗香飘飘牛肉面,哇吃起来真香,用起来也一定很简单吧~
配置文件官方文档
添加链接描述
自动配置原理
-
spring-boot-dependencies:核心依赖在父工程中
- 我们在添加Springboot依赖时不需要指定版本号,
- 就是因为在这些版本在 spring-boot-dependencies 中指定
-
@ComponentScan 扫描包
-
SpringBoot启动的时候加载主配置类 @SpringBootApplication
注解
@SpringBootConfiguration Springboot的配置
@Configuration spring配置类
@Component 说明这也是一个spring的组件
@EnableAutoConfiguration 自动配置
@AutoConfigurationPackage 自动配置包
@Import(AutoConfigurationPackages.Registrar.class) 自动配置 包注册
@Import(AutoConfigurationImportSelector.class) 自动导入选择配置
获取所有的配置
List<String> configurations =
getCandidateConfigurations(annotationMetadata, attributes);
@ComponentScan 扫描当前启动类同级的包
- 获取候选的配置
protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
List<String> configurations = SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass(),
getBeanClassLoader());
Assert.notEmpty(configurations,
"No auto configuration classes found in METAINF/spring.factories. If you "
+ "are using a custom packaging, make sure that file is correct.");
return configurations;
}
- 核心自动配置
结论:
- springboot 所有的自动配置都是在启动的时扫描加载
- 配置类都在 spring.factories 里面 但是不一定都生效 要满足条件(@ConditionalOnClass)
- (只要导入了对应的 start ,就有了对应的启动器,有了启动器,自动配置就生效了)
1,springboot项目启动的时候会自动加载 METAINF/spring.factories 下的配置
2,自动将这些配置类导入容器中,自动配置就会生效,帮我们自动配置
3,以前我们需要的自动配置 springboot就帮我们自动配置了
4,springboot所有的配置的东西都在 spring-boot-autoconfigure-2.2.5.RELEASE.jar 中
Springboot @Conditional 条件注解