一.扫描原理
https://blog.csdn.net/qq_30228707/article/details/118893919
https://juejin.cn/post/6844904165320179719
原理概述:
- 扫描给定目录及子目录下所有的class文件
- 生成SimpleMetadataReader,使用ASM读取class文件
- 判断扫描到的BeanDefinition是否满足注入条件
- 生成ScannedGenericBeanDefinition,该BeanDefinition实现了AnnotatedBeanDefinition接口,使用ASM(复用SimpleMetadataReader)获取Class的注解信息,而不需要JVM加载class AnnotatedBeanDefinition对BeanDefinition扩展,可以获取Class的注解信息。AnnotationMetadata表示Class注解的元数据,标准实现类为StandardAnnotationMetadata,而AnnotationMetadataReadingVisitor使用访问者模式,通过ASM获取注解信息。
- 检查BeanDefinition是否为非接口,非循环依赖
- 保存结果
二. @ComponetScan 是可以扫描第三方jar包的
1.@ComponetScan没有参数, 如果第三方jar包的包路径和 启动类包路径一样,那么该第三方jar包也可以被扫描到
- @ComponetScan 增加第三方jar包的路径作为参数,那么就可以扫描到该包
三. @ComponentScan 也可以排除扫描的类
https://blog.csdn.net/AKALXH/article/details/112461895
四. @componentscan可以扫描到哪些注解
只能扫描@component 或 拓展了@component的注解
https://www.csdn.net/tags/Ntzagg3sNDU2ODctYmxvZwO0O0OO0O0O.html
网友评论