当前位置: 首页 > news >正文

Spring注解解释(@Primary、@Qualifier)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

@Primary/@Qualifier

当你一个接口的实现类有多个的时候,你通过@Component来注册你的实现类有多个,但是在注入的时候使用@Autowired


这样问题就来了,Spring就不知道你注入哪个,那现在就可以通过下面两个办法解决:

  • @Primary 优先考虑,优先考虑被注解的对象注入
  • @Qualifier 名字声明,声明后对名字进行使用

@Qualifier 看看官网怎么用

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <context:annotation-config/>

    <bean class="example.SimpleMovieCatalog">
        <qualifier value="main"/>

        <!-- inject any dependencies required by this bean -->
    </bean>

    <bean class="example.SimpleMovieCatalog">
        <qualifier value="action"/>

        <!-- inject any dependencies required by this bean -->
    </bean>

    <bean id="movieRecommender" class="example.MovieRecommender"/>

</beans>

上面声明了,下面用

public class MovieRecommender {

    @Autowired
    @Qualifier("main")
    private MovieCatalog movieCatalog;

    // ...

}

理解

注解备注
@Primary优先方案,被注解的实现,优先被注入
@Qualifier先声明后使用,相当于多个实现起多个不同的名字,注入时候告诉我你要注入哪个

转载于:https://my.oschina.net/u/1983041/blog/738825

相关文章:

  • storm-kafka(storm spout作为kafka的消费端)
  • js没有重载
  • 【索引】Oracle之不可见索引和虚拟索引的比对
  • 分区
  • class文件概述
  • 关于 LVM 逻辑卷管理
  • mysql学习之旅-数据库自动备份和手动恢复
  • 寻找二叉查找树中的下一个结点
  • nginx的安装及基本配置,及多个域名服务
  • 滚动字幕标记marquee/marquee
  • 观察者模式实现非直接耦合
  • 怎么把Maven项目转为动态Web项目?
  • mysql外键的使用
  • 08.Switch的使用方法
  • Python学习笔记11—函数
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 07.Android之多媒体问题
  • 11111111
  • Angular2开发踩坑系列-生产环境编译
  • Angular数据绑定机制
  • Cumulo 的 ClojureScript 模块已经成型
  • Django 博客开发教程 16 - 统计文章阅读量
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • Java-详解HashMap
  • js递归,无限分级树形折叠菜单
  • k个最大的数及变种小结
  • leetcode386. Lexicographical Numbers
  • MQ框架的比较
  • Sass 快速入门教程
  • 使用权重正则化较少模型过拟合
  • 网络应用优化——时延与带宽
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 因为阿里,他们成了“杭漂”
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #git 撤消对文件的更改
  • #QT(串口助手-界面)
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (poj1.2.1)1970(筛选法模拟)
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (一)Java算法:二分查找
  • (转)平衡树
  • ***利用Ms05002溢出找“肉鸡
  • .bat批处理(六):替换字符串中匹配的子串
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NET 中让 Task 支持带超时的异步等待
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET中的十进制浮点类型,徐汇区网站设计
  • .net中我喜欢的两种验证码
  • :O)修改linux硬件时间
  • [BUUCTF NewStarCTF 2023 公开赛道] week3 crypto/pwn
  • [C++] sqlite3_get_table 的使用