SpringFramework源码学习-扫描

2022-11-01  本文已影响0人  Rena的秘密

一.扫描返回包路径下的候选的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容器。

上一篇 下一篇

猜你喜欢

热点阅读