一、spring内置的BeanDefinitionRegistryPostProcessor及其作用

何为BeanDefinitionRegistryPostProcessor?

BeanDefinitionRegistryPostProcessor是BeanFactoryPostProcessor的拓展接口

☆ConfigurationClassPostProcessor

ConfigurationClassPostProcessor这个类何时被加载到Spring容器中?

实例化AnnotationConfigApplicationContext中的AnnotatedBeanDefinitionReader时,将ConfigurationClassPostProcessor封装成BeanDefinition,放入到BeanFactory中。

ConfigurationClassPostProcessor何时被初始化?

ConfigurationClassPostProcessor何时被执行?

会先执行

后执行

为什么会先执行postProcessBeanDefinitionRegistry()方法,再执行postProcessBeanFactory()方法?

ConfigurationClassPostProcessor的两个方法都做了什么工作?

1、ConfigurationClassPostProcessor#postProcessBeanDefinitionRegistry

对加了@Configuration注解的类的进行解析。获取@PropertySource、@ComponentScan、@ImportResource、@Import等注解,根据这些注解完成特定工作。

  • 解析@ComponentScan注解中的包路径,扫描包路径下有@Component的类,以及在@Configuration中定义的@Bean,

       将这些类封装成BeanDefinition,放入到BeanFactory中。

       @Component有很多子注解,它们是:@Configuration、@Controller、@Service、@Repository,也可以自定义注解。

  • 解析@ImportResource可以解析xml文件。
  • 解析@Import,@Import是Spring中很重要的一个拓展点。

       @Import的类分为三种类型:

  1.  一般的普通类
  2. ImportSelector接口的子类
  3. ImportBeanDefinitionRegistrar接口的子类

2、ConfigurationClassPostProcessor#postProcessBeanFactory

  • 对加了@Configuration的类进行动态代理;
  • 向BeanFactory中添加一个ImportAwareBeanPostProcessor

 

下一篇  二、Spring内置的BeanFactoryPostProcessor及其作用

 

 

 

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值