最详细的SpringBoot自动配置原理

最详细的SpringBoot自动配置原理

1、springboot自动配置原理:
@SpringBootApplication -> @SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan
@SpringBootConfiguration -> @Configuration
@EnableAutoConfiguration -> @AutoConfigurationPackage、@Import(AutoConfigurationImportSelector.class)
@AutoConfigurationPackage -> @Import(AutoConfigurationPackages.Registrar.class)
@ComponentScan -> @Repeatable(ComponentScans.class)
原理解释:其实就是@EnableAutoConfiguration注解去开启自动配置,然后里面的那个@Import(AutoConfigurationImportSelector.class)
Import注解里的AutoConfigurationImportSelect类里面有个getAutoConfigurationEntry()方法,这个方法里面又调用了一个
getCandidateConfigurations()方法,之后该方法里面调用了SpringFactoriesLoader.loadFactoryNames
(getSpringFactoriesLoaderFactoryClass(),getBeanClassLoader())这个方法,之后loadFactoryNames()方法加载了
META/INF文件夹下的spring.factories文件,这个文件里面就配置了一些需要加载的jar包。
spring.factories这个文件里面配置了很多 xxxAutoConfiguration配置类,这些配置类上面其中有一个@EnableConfigurationProperties
注解,这个注解里面的value可以放一些class类数组(xxx.class)用来开启被@ConfigurationProperties注解标识的类,使之生效;这
就是我们为啥可以在application.properties文件里面配置一些属性了的原因。

常用注解解释: @SpringbootConfiguration注解里面就是一个@Configuration注解,作用就是标识这个类是一个配置类;
@EnableAutoConfiguration注解开启自动配置
@AutoConfigurationPackage注解就是扫描包到spring容器中,只有扫描到该包,这个包里面的一些标识了
类似@Controller、@Service等注解的类才会被加载进spring容器;
@Import注解就是扫描并导入某个组件,作用有:1、可以引入其他的@Configuration类组件,并且它的优先级大于本身类定义的类加载
2、可以直接初始化其他类的Bean,相当于@Bean的功能
3、指定其他的一些类,比如 xxxImportSelector类实现自定义的组件加载
@ComponentScan注解就是可以扫描一些包进来
@ComponentScans注解是可以放很多的@ComponentScan
@EnableConfigurationProperties注解是开启配置属性功能,是被@ConfigurationProperties注解标识的类加载到容器中生效。
@ConfigurationProperties注解是标识这个类是一个属性配置类(如果在这个类上面加上一个@Component注解,就一个不用开启了)
@Value注解是将某个字段赋值,值来源于配置文件${};
@MapperScan注解是扫描某个包,多个包用逗号分隔开,其中basePackages和basePackageClasses属性分别是扫描包,第二个是扫描
该类下的包的所有类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值