Spring 内部工具 : ComponentScanAnnotationParser -- @ComponentScan注解处理器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/andy_zhang2007/article/details/85630233

概述

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 是如何工作的 ?

猜你喜欢

转载自blog.csdn.net/andy_zhang2007/article/details/85630233