Spring ConfigurationClassParser 详解

        Spring的 ConfigurationClassParser 用于分析@Configuration注解的配置类,产生一组ConfigurationClass对象。它的分析过程会接受一组种子配置类(调用者已知的配置类,通常很可能只有一个),从这些种子配置类开始分析所有关联的配置类,分析过程主要是递归分析配置类的注解@Import,配置类内部嵌套类,找出其中所有的配置类,然后返回这组配置类。
    ConfigurationClassParser 主要由 ConfigurationClassPostProcessor 使用,而ConfigurationClassPostProcessor是一个BeanDefinitionRegistryPostProcessor/BeanFactoryPostProcessor,它会在容器启动过程中,应用上下文上执行各个BeanFactoryPostProcessor时被执行。

    这个类自身的逻辑并不注册bean定义,它的主要任务是发现@Configuration注解的所有配置类并将这些配置类交给调用者(调用者会通过其他方式注册其中的bean定义),而对于非@Configuration注解的其他bean定义,比如@Component注解的bean定义,该工具类使用另外一个工具ComponentScanAnnotationParser扫描和注册它们。

    一般情况下一个@Configuration注解的类只会产生一个ConfigurationClass对象,但是因为@Configuration注解的类可能会使用注解@Import引入其他配置类,也可能内部嵌套定义配置类,所以总的来看,ConfigurationClassParser分析一个@Configuration注解的类,可能产生任意多个ConfigurationClass对象。
 

猜你喜欢

转载自blog.csdn.net/m0_37039331/article/details/87970041