概述
ComponentScanAnnotationParser是Spring的一个内部工具,它会基于某个类上的@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

3967

被折叠的 条评论
为什么被折叠?



