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框架通过反射方式给字段注入合适的对象。

参考技术A

@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
  1. public class ConcatenateString{
  2. public static void main(String args[]){
  3. String str1, str2;
  4. str1 = "I am learning ";
  5. str2 = "Java programming language";
  6. str1 = str1 + str2;
  7. System.out.println(str1);
  8. }
  9. }

以上是关于java中@Qualifier("string")是啥用法?的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记Java中@Qualifier注解

为啥 Application.Wait 会出现编译错误:“Invalid Qualifier”

Java中"str1.equals(str2)"和"str1==str2"的区别

从头认识Spring-2.3 注解装配-@autowired-限定器@Qualifier

java String类 开辟内存问题

java中20个文字切割一下去空格