Spring 工具类 ComponentScanAnnotationParser @ComponentScan注解处理器:扫描和注册组件bean

概述

ComponentScanAnnotationParserSpring的一个内部工具,它会基于某个类上的@ComponentScan注解属性分析指定包(package)以获取其中的bean定义。

所分析的包可以是多个包。

你可以简单地将ComponentScanAnnotationParser理解成注解@ComponentScan的处理器:

  • 输入 : @ComponentScan 注解信息
  • 处理 :
    • 执行ClassPathBeanDefinitionScanner 的扫描逻辑
      • 扫描输入信息所指定的各个包以发现bean定义
      • 注册扫描得到的每个bean定义到容器
  • 输出 : 输入信息所指定的包中所有的bean定义

它对注解@ComponentScan的处理在应用启动过程中配置类分析阶段进行。具体的可以参考ConfigurationClassParser#doProcessConfigurationClass

所分析的包(package)包括 :

  • 注解属性中属性basePackages所指定的包(package)
  • 注解属性中属性basePackageClasses指定的类所在的包(package)
  • 注解属性的注解类所在的包(package)
    • 仅在basePackages,basePackageClasses都为空时才生效

ComponentScanAnnotationParser 最终所使用的扫描器是ClassPathBeanDefinitionScanner

ComponentScanAnnotationParser 的分析流程其实是从注解属性中提取有关信息,将其设置到ClassPathBeanDefinitionScanner扫描器上,然后调用ClassPathBeanDefinitionScanner执行bean定义的扫描和到容器的注册。

ComponentScanAnnotationParser所在包:org.springframework.context.annotation

相关文章

Spring 工具类 ConfigurationClassParser 分析得到配置类
Spring 工具类 ClassPathBeanDefinitionScanner Bean定义扫描
Spring BeanDefinitionRegistryPostProcessor : ConfigurationClassPostProcessor

你可能感兴趣的:(Java,spring,Spring,内部工具)