SpringFramework源码学习-扫描

一.扫描返回包路径下的候选的BeanDefinition(有@Componet注解的类)


1.1 从包路径下获取所有的.class文件

1.2遍历每个Resource对象

1.3利用MetadataReaderFactory解析resource得到MetadataReader对象

1.4利用MetadataReader进行excludeFilter和includeFilter过滤,以及@Conditional条件注解的筛选符合条件的类信息,生成ScannerGenericBeanDefinition

1.5再根据MetadataReader判断这个类是否是抽象类或者接口,如果不是就加入候选的结果集中。

二.遍历候选的BeanDefinition


2.1.获取ScopeMetadata从而获取到BeanDefinition的Scope数据。

2.2获取MetadataReader从而获取到类的信息,包括类名、父类的名字、所实现的接口名字、内部类的名字、判断是否是抽象类、判断是否是接口、判断是是不是一个注解、所有注解信息等。

2.3检查spring容器中是否存在当前beanName,如果不存在则把BeanDefinition注册进入spring容器。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容