java中@Qualifier("string")是啥用法?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中@Qualifier("string")是啥用法?相关的知识,希望对你有一定的参考价值。
@Autowired是根据类型进行自动装配的。如果当Spring上下文中存在不止一个UserDao类型的bean时,就会抛出BeanCreationException异常;如果Spring上下文中不存在UserDao类型的bean,也会抛出BeanCreationException异常。我们可以使用@Qualifier配合@Autowired来解决这些问题。如下:
①可能存在多个UserDao实例
②可能不存在UserDao实例
扩展资料:
@Qualifier("XXX") Spring的Bean注入配置注解,该注解指定注入的Bean的名称,Spring框架使用byName方式寻找合格的bean,这样就消除了byType方式产生的歧义。
Spring的IoC的xml配置文件方式会让XML文件变的比较长而且繁琐,所以自JDK 1.5之后,越来越多的框架推出注解配置,Spring的Bean注入就可以通过@Resource、@Autowire标记此处要注入bean,Spring框架通过反射方式给字段注入合适的对象。
@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:
@Autowired@Qualifier("userDAO")
private UserDAO userDao; 参考技术B Spring的注解,用于自动注入
@Qualifier("XXX") 中的 XX是 Bean 的名称,
所以 @Autowired 和 @Qualifier 结合使用时,自动注入的策略就从 byType 转变成 byName 了。
获取到的就像下面
eg:<bean id="string"></bean> 参考技术C 在使用Spring框架中@Autowired标签时默认情况下使用 @Autowired 注释进行自动注入时,Spring 容器中匹配的候选 Bean 数目必须有且仅有一个。当找不到一个匹配的 Bean 时,Spring 容器将抛出
BeanCreationException 异常,并指出必须至少拥有一个匹配的 Bean。
Spring 允许我们通过 @Qualifier 注释指定注入 Bean 的名称,这样歧义就消除了,可以通过下面的方法解决异常。
@Qualifier("XXX") 中的 XX是 Bean 的名称,所以 @Autowired 和 @Qualifier 结合使用时,自动注入的策略就从 byType 转变成 byName 了。
@Autowired 可以对成员变量、方法以及构造函数进行注释,而 @Qualifier 的标注对象是成员变量、方法入参、构造函数入参。本回答被提问者采纳 参考技术D 这是java注解,可以在网上查询java注解
在Java中连接字符串
Concatenating String in Java
public class ConcatenateString{ String str1, str2; str1 = "I am learning "; str2 = "Java programming language"; str1 = str1 + str2; } }
以上是关于java中@Qualifier("string")是啥用法?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Application.Wait 会出现编译错误:“Invalid Qualifier”
Java中"str1.equals(str2)"和"str1==str2"的区别