@ComponentScan 组件扫描的实现逻辑
- 通过
AnnotationUtils.findAnnotation()
来获取该注解的信息(注解信息主要是扫描的包,以及配置类中是否包含该注解) - 解析并拼接转换字符串(从设置的包名到实际的文件路径名)
- 通过
getResource()
获取这些资源(二进制字节码.class
) - 判断这些资源是否是 Spring 的组件:包含
@Component
或其衍生注解 - 创建并根据信息(信息通过反射工具类获取)设置
BeanDefinition
- 在 BeanFactory 中注册 BeanDefinition