首页 > 编程语言 > 详细

spring boot autowired的注入规则

时间:2020-07-29 19:55:29      阅读:75      评论:0      收藏:0      [点我收藏+]

@Autowired注解描述属性时,系统底层会基于属性类型从spring容器查找对象,假如有多个
类型都满足注入要求,则还会基于属性名进行查找,检测哪个bean名字与属性名相同,
假如有相同的则,直接取相同进行注入,没有则抛出异常。

相同的类型的接口有多个实现类报出org.springframework.beans.factory.NoUniqueBeanDefinitionException异常

解决方法:1。使用```
@Qualifier("实现类名")


2.`private 接口类 实现类名`

3.将实现类起名
`@Component("起的名")`


@Autowired由spring框架定义,用于描述类中属性或相关方法(构造方法,set方法)。
Spring框架在项目运行时假如发现由他管理的Bean对象中有使用@Autowired注解描述的属性或方法,
可以按照指定规则为属性赋值(DI)。
其基本规则是:首先要检测容器中是否有与属性或方法参数类型相匹配的对象,假如有并且只有一个则直接注入。
其次,假如检测到有多个,还会按照@Autowired描述的属性或方法参数名查找是否有名字匹配的对象,
有则直接注入,没有则抛出异常。最后,假如我们有明确要求,必须要注入类型为指定类型,
名字为指定名字的对象还可以使用@Qualifier注解对其**属性或参数**进行描述(此注解必须配合@Autowired注解使用)
当描述构造方法时,会根据构造方法的参数类型去匹配

spring boot autowired的注入规则

原文:https://www.cnblogs.com/syrgdm/p/13398568.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!