Spring-扫描 流程图
2023-11-30 01:07:32 0 举报
学习笔记
作者其他创作
大纲/内容
判断beanName是否被注册过
isCandidateComponent
循环结束后返回BeanDefinition集合
跳过该资源,返回false
满足条件,返回true
加入BeanDefinition集合
findCandidateComponents
否
是
创建BeanDefinition对象
跳过该资源,返回fasle
内部过程
isCandidateComponent再次判断是否满足条件
抛出异常,不同类取相同名字
是否满足@Conditional注解中包含的逻辑
未被注册,满足条件,返回true
checkCandidate
对找到资源文件进行循环
isCandidateComponent初步判断是否满足条件
(metadata.isIndependent() && (metadata.isConcrete() || (metadata.isAbstract() && metadata.hasAnnotatedMethods(Lookup.class.getName()))))
包扫描
兼容,返回false,放弃注册(已经注册过了)
未被注册过,执行注册
是否包含,includeFilters
根据包路径加载资源文件(.class),并返回BeanDefinition集合
是否兼容(同一个类多次扫描)
是否需要过滤,excludeFilters
判断beanName是否已经被注册过
被注册过,返回false,跳过该beanDefinition或者抛出异常,报错并停止启动
1、对scope赋值2、对beanDefinition赋值3、解析@Lazy、@Primary、@DependsOn、@Role、@Description并设置给当前beanDefinition
文本
spring容器启动
对BeanDefinition集合进行循环
收藏
0 条评论
下一页