自动配置类的加载方式和时机

自动配置类的加载方式和时机

1. 加载方式

SpringApplicationContext的启动过程主要分为几个步骤

  1. 加载BeanDefinition
  2. 注册BeanPostProcessor
  3. 实例化Bean
  4. 调用BeanPostProcessor

对于Application内定义的BeanDefinition我们可以通过ComponentScan设置扫描路径进行自动扫描。但是对于自动配置类一般不在ComponentScan的扫描路径内,那自动配置类是何时以及如何被加载的呢?

我们知道对于通过注解启动的Application,BeanDefiniton的加载过程主要由BeanFactoryPostProcessor来实现,其核心类是ConfigurationClassPostProcessor,而ConfigurationClassPostProcessor支持两种Bean Import方法,一种是基于ImportSelector,另一种是基于ImportBeanDefinitionRegistrar。

那么自动配置类的加载就是通过ImportSelector方式实现的,要想Application支持自动配置需要添加@EnableAutoConfiguration注解。
该注解的定义如下:
在这里插入图片描述
可以看到该注解Import了AutoConfigurationImportSelector类,该类正式ImportSelector的实现类。
在这里插入图片描述
正常我们在SpringBoot Application的启动类上会添加 @SpringBootApplication注解,这个注解本身就自带@EnableAutoConfiguration注解,所以正常我们只需要在应用启动类上添加@SpringBootApplication注解即可。

SpringBootApplication注解功能强大啊!
在这里插入图片描述

2. 加载时机

还记得ConfigurationClassPostProcessor是如何处理各注解的加载顺序的吗?
详情可参考2.2 各注解加载顺序

加载顺序:

如果是Component组件,处理类成员
处理@PropertySource注解
处理@ComponentScan注解
处理@Import注解
处理@ImportResource注解
处理@Bean方法
处理接口的默认方法
处理父类(如果有的话)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值