@Autowired查找候选者的过程
2023-08-22 23:13:29 0 举报
在Spring框架中@Autowired查找候选者的过程
作者其他创作
大纲/内容
抛出未找到bean异常
从beanList2中查找有@javax.annotation.Priority的bean,这个注解中有个value值,值越小优先级越高
直接将beanList2中的第一个元素返回
找到了
beanList2中是否只有一个元素
否
直接返回
未找到
无
@Autowire标注在方法或参数上比标注在字段上多出的步骤
是
从beanList2中查找有@Primary的bean
判断是否是必须的bean(@Autowared的required是否为true)
beanList2 = beanList1
判断beanList2是否为空
找到多个,抛出异常
返回null
通过@Qualifer对beanList1进行过滤,得到一个新的候选者列表:beanList2
通过方法上的@Qualifer对beanList2再次过滤进行过滤,得到一个新的候选者列表:beanList2
找到了优先级最高的直接返回
查找过程中如果有多个bean的@Priority的value一样,则抛出异常
当前方法上是否有@Qualifer注解
从容器中查找所有符合参数类型的bean,找到候选者bean列表,记作:beanList1
将方法参数名称作为bean的名称从beanList2中查找
@Autowire标注在字段上
字段上是否有Qualifer注解
@Autowire标注在方法或参数上
beanList2不变
从容器中按字段类型查询,找到候选者bean列表,记作:beanList1
只找到一个,直接返回
有
将字段名称作为bean的名称beanList2中查找
0 条评论
回复 删除
下一页