Spring的注解@Qualifier注解

Posted 流楚丶格念

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring的注解@Qualifier注解相关的知识,希望对你有一定的参考价值。

概念

@Qualifier是Spring中的注解,是在使用Spring框架中@Autowired注解进行自动注入时,Spring 容器中匹配的候选Bean数目必须有且仅有一个 。

这是因为在使用Spring框架中@Autowired标签时默认情况下使用 @Autowired 注释进行自动注入时,Spring 容器中匹配的候选 Bean 数目必须有且仅有一个。当找不到一个匹配的 Bean 时,Spring 容器将抛BeanCreationException 异常,并指出必须至少拥有一个匹配的 Bean。

比如,有两个service实现了统一业务接口,并且都标注了@Service注解,Spring 允许我们通过 @Qualifier 注释指定注入 Bean 的名称,这样歧义就消除。

@Qualifier参数:@Qualifier的参数名称必须为我们之前定义@Service注解的名称之一

使用:配合autowired使用

也就是说:@Qualifier注解就是通过名字挑选符合条件的,通过这个标示,表明了哪个实现类才是我们所需要的

看下面一个例子更加清晰了就

代码示例

这里我们定义两个接口的实现类,都加上service注解

@Service("a")
public class QualifierServiceImpl implements QualifierService 
    public QualifierDto getQualifierById(Long id) 
        return new QualifierDto();
    


@Service("b")
public class QualifierServiceImpl1 implements QualifierService 
    public QualifierDto getQualifierById(Long id) 
    	return new QualifierDto();
    

我们应用@Qualifier(“b”),就可以消除上面定义的歧义,注入容器中的就是QualifierServiceImpl1的实例了

@Controller
@RequestMapping("/test")
public class TestQualifier 
    
    @Autowired
    @Qualifier("b")
    QualifierService qualifierService;
    
    @RequestMapping(params = "method=showQualifierInfo")
    public void showQualifierInfo(HttpServletRequest request, HttpServletResponse response, QualifierDto dto) 
        ......
    

以上是关于Spring的注解@Qualifier注解的主要内容,如果未能解决你的问题,请参考以下文章

Spring处理自动装配的歧义性

@Qualifier 注解有什么用?

@Qualifier 注解有什么用?

Spring的注解@Qualifier注解

Spring的注解@Qualifier用法

Spring的注解@Qualifier用法