永发信息网

java中@Qualifier是什么用法

答案:2  悬赏:50  手机版
解决时间 2021-03-04 09:12
java中@Qualifier是什么用法
最佳答案
@Qualifier("XXX") Spring的Bean注入配置注解,该注解指定注入的Bean的名称,Spring框架使用byName方式寻找合格的bean,这样就消除了byType方式产生的歧义。
Spring的IoC的xml配置文件方式会让XML文件变的比较长而且繁琐,所以自JDK 1.5之后,越来越多的框架推出注解配置,Spring的Bean注入就可以通过@Resource、@Autowire标记此处要注入bean,Spring框架通过反射方式给字段注入合适的对象。
@Autowire注解按照类型,即注解的字段的类型寻找该类型的实例bean,这种方式成为byType。这种方式会引发歧义,比如UserDAO整个框架可能有N多个该对象,那么Spring框架会采用一定规则寻找bean(转换为byName寻找,失败后报错)
@Resource是JDK提供的注解,默认就是按照byName的方式寻找bean,一般一个name对应一个bean,当找不到与名称匹配的bean才会按照类型装配(byType)。
想要让@Autowired方式按照name方式注入,可以结合@Qualifier("XX")使用,让@Autowired按照byName方式装配。
eg:
1 @Autowired
2 @Qualifier("userDAO")
3 private UserDAO userDao;
全部回答
在使用spring框架中@autowired标签时默认情况下使用 @autowired 注释进行自动注入时,spring 容器中匹配的候选 bean 数目必须有且仅有一个。当找不到一个匹配的 bean 时,spring 容器将抛出 beancreationexception 异常,并指出必须至少拥有一个匹配的 bean。 spring 允许我们通过 @qualifier 注释指定注入 bean 的名称,这样歧义就消除了,可以通过下面的方法解决异常。 @qualifier("xxx") 中的 xx是 bean 的名称,所以 @autowired 和 @qualifier 结合使用时,自动注入的策略就从 bytype 转变成 byname 了。 @autowired 可以对成员变量、方法以及构造函数进行注释,而 @qualifier 的标注对象是成员变量、方法入参、构造函数入参。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
五彩精品藏装这个地址在什么地方,我要处理点
怎么变的话多一点啊?
今天流行的软皮外套是什么皮质
首都师范大学既不是985也不是211,提档分数为
做梦梦到数字真的就出现在中奖号里,这是怎么
钱包为什么不能用红色
读图(全球年降水量的纬度变化与大气环流关系
手机没话费了能不能打进来
02年前的五粮液如何查真伪
“农民获得自由的时候,已经被剥夺得一干二净
籽和子两个字在什么情况下可以通用呢
有关电梯的小学相声
美团上民宿的标价是一晚上的标价吗
farther与further的区别!
王者荣耀英雄穿越到现代的小说
推荐资讯
冰柠disappear的情侣名
中国有多少个地名是带州字的?
耳洞打了有两个月了,明天有一节课不能戴耳钉
洗胃后可以吃什么水果
还有什么 和腾讯视频一样包月 免流量看视频
在合肥哪个汽车站可以去潜山?
优仕领域在什么地方啊,我要过去处理事情
安恩和奶牛 写作手法上最突出的特点是什么?
加热棒的温度调节
直肠刺激征的具体体征
北京怀柔安佳医院停车场怎么去啊,有知道地址
【苏打粉是什么】苏打和小苏打的分子式是什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?