跳到主要内容

吃透Spring源码(十六):ConfigurationClassPostProcessor详细介绍

文章目录

    • 一,ConfigurationClassPostProcessor简介
  • 二,ConfigurationClassPostProcessor注入时机
    • 1,注解方式的注入
    • 2,XML方式的注入
  • 三,postProcessBeanDefinitionRegistry()方法
    • 1,第一步,筛选出被@Configuration注解标注的BeanDefinition
    • 2,第二步,解析被@Configuration注解标注的BeanDefinition
    • 3,第三步,将扫描到的所有beanDefinition注册到容器的BeanDefinitionMap中
    • 4,第四步,判断第三步中注入到BeanDefinitionMap中BeanDefinition是否已经被解析过,如果没有被解析过,那么需要继续解析
  • 四,postProcessBeanFactory()方法
  • 五,总结

一,ConfigurationClassPostProcessor简介

ConfigurationClassPostProcessor是一个后置处理器的类,主要功能是参与BeanFactory的建造,主要功能如下:

  • 解析加了@Configuration的配置类
  • 解析@ComponentScan扫描的包
  • 解析@ComponentScans扫描的包
  • 解析@Import注解

ConfigurationClassPostProcessor类图:

 

ConfigurationClassPostProcessor 实现了 BeanDefinitionRegistryPostProcessor 接口,而 BeanDefinitionRegistryPostProcessor 接口继承了 BeanFactoryPostProcessor 接口,所以 ConfigurationClassPostProcessor 中需要重写 postProcessBeanDefinitionRegistry() 方法和 postProcessBeanFactory() 方法。