字面理解

首先,字面意思,显然它是单词Qualify的一个变形,把y改i加er。Qualify是质量的意思。而Qualifier有合格者的意思。

  • 合格者在这里有啥意思,显然,翻译之后我更困惑了。【检查这个参数是否合格?标准是啥?在哪检查?不合格会咋样?
代码层面

显然我薄弱的语文水平,领悟不到其中的深意。还是看代码吧。

  • Qualifier注解= 以下四个注解
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Qualifier {String value() default "";
}
  • 然后就逐个击破

    • Documented 译为记录:默认情况下,带有Documented的注释将有javadoc和类似工具记录,仅可用于注释类型声明。

      • 此处使用解读:Qualifier会由javadoc和类似工具记录
    • Inherited 译为 继承的:表示自动继承注解类型。
    • Retention 译为 保留 :Retention是用来指示带注释类型的注释将保留多长时间,默认为RetentionPolicy.CLASS。该注解只在元注解类型是直接运用在注解上时才生效【应该就是只有注解才能用这个注解,属于套娃了,应该是这个意思吧】。其可以通过RetentionPolicy有三种方式,1.默认的CLASS :注释由编译器记录在类文件中,在运行时不需要保存在VM中。 2.SOURCE :编译器会丢弃该注解 3.RUNTIME:注释由编译器记录在类文件中,在运行时会保存在VM中,也就是说,可以被反射读取。
      • 此处使用解读:Qualifier注解是在运行时会保存到vm中的,可以被反射读取的。
      • 总结:Qualifier参数可以被反射读取
    • Target 译为 目标 :Target是用来指示注释类注解适用的上下文,结合ElementType定义了一些位置,注意,单个ElementType变量不能在该注释中出现多次。
      • 此处使用解读:Qualifier注解可使用的位置有这些:字段声明(包括枚举常量),方法声明,形参声明,类、接口或枚举声明。【在实战代码中就是属于形参声明】
      • 总结:这个就是标注了一下这个Qualifier这个参数可以在哪里用。

​ 综上所述,都是Qualifier本身的特性,在哪里能用,保存多久,还是没有解释好到底咋用。

代码实验

好像前面有了很多理论还是没有明显的知道有啥用,实践出真知。试一试,把实战中的Qualifie注解删了。

  • 报错如下:就是找不到类了,且Action中提醒我们有多个bean,建议我们考虑使用@Primary注解或者@Qualifie指定一个bean使用
Parameter 0 of method queuebBindingX in com.example.rabbitmqspringboot.config.TltQueueConfig required a single bean, but 5 were found:- confirmQueue: defined by method 'confirmQueue' in class path resource [com/example/rabbitmqspringboot/config/ConfirmConfig.class]- queueC: defined by method 'queueC' in class path resource [com/example/rabbitmqspringboot/config/TltQueueConfig.class]- queueA: defined by method 'queueA' in class path resource [com/example/rabbitmqspringboot/config/TltQueueConfig.class]- queueB: defined by method 'queueB' in class path resource [com/example/rabbitmqspringboot/config/TltQueueConfig.class]- queueD: defined by method 'queueD' in class path resource [com/example/rabbitmqspringboot/config/TltQueueConfig.class]Action:Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed

​ 综上所述,在实战的代码中,由于定义队列和交换机的时候,定义了多个交换机和队列,需要通过名字来找到对应的bean。

​ 针对之前的困惑: 检查这个参数是否合格?标准是啥?在哪检查?不合格会咋样

​ 解读: 从已有的定义的类去找,找和Qualifier标注的名字一样的,标准就是名字,不合格就不取,合格就拿过来用。

​ 用处:当用的依赖可能存在冲突时,通过具体名字在解决冲突。

说明

1.题图来源 一个。

2.代码参考 尚硅谷 RabbitMQ学习教程

Qualifier注解相关推荐

  1. 在方法的形参位置使用@Qualifier注解||@Autowired 与@Resource的区别

    实验21:在方法的形参位置使用@Qualifier注解 实验22:@Autowired注解的required属性指定某个属性允许不被设置 @Autowired   @Resource  @Inject ...

  2. 请举例说明@Qualifier 注解?

    @Qualifier 注解意味着可以在被标注bean 的字段上可以自动装配.Qualifier 注解可以用来取消Spring不能取消的bean 应用.

  3. Spring学习(10)--- @Qualifier注解

    按类型自动装配可能多个bean实例的情况,可以使用Spring的@Qualifier注解缩小范围(或指定唯一),也可以指定单独的构造器参数或方法参数 可用于注解集合类型变量 例子: package c ...

  4. java中qualifier注解怎么写_Java 注解 Qualifier

    有如下接口: public interfaceEmployeeService {publicEmployeeDto getEmployeeById(Long id); } 同时有下述两个实现类 Emp ...

  5. spring的@primary和@qualifier注解解决一个接口多个实现的注入问题

    spring的@primary和@qualifier注解解决一个接口多个实现的注入问题 参考文章: (1)spring的@primary和@qualifier注解解决一个接口多个实现的注入问题 (2) ...

  6. 23 SpringBoot @Qualifier注解

    //定义亚洲人 @Qualifier("Asian") @Component public class AsianMan extends Person {}········//定义 ...

  7. @Qualifier注解的使用

    1:当一个接口的方法,对应多个实现的时候,怎么区分到底注入哪一个 @Service public interface MyService{public int findSomeone(); }//第一 ...

  8. @Primary和@Qualifier注解

    @Primary和@Qualifier注解,都是处理@Autowired注入时,发现多个相同类型的冲突时,进行解决. 实际项目中,@Autowired,默认是byType注入,当发现多个实现类的时候, ...

  9. @Qualifier注解

    @Autowired是根据类型进行自动装配的.如果当spring上下文中存在不止一个UserDao类型的bean时,就会抛出BeanCreationException异常;如果Spring上下文中不存 ...

最新文章

  1. PHP--isset()和unset()函数的用法
  2. idea如何打war包?(部署tomcat后具有class文件)
  3. python 多维list 排序_人生苦短 | Python列表和元组归纳整理
  4. 在组件之间实现事务和异步提交事务(NET2.0)
  5. 宝塔nginx文件服务器,宝塔面板nginx编译webdav模块 – 建立webdav服务器
  6. techempower之Plaintext上7百万RPS
  7. 会做饭的机器人曰记_颜真卿《麻姑仙坛记》:苍劲古朴,体态沉雄,气象宏大...
  8. 中英对照 关于计算机的科技英语,《计算机专业英语》(中英文对照).pdf
  9. python中实现sigmiod功能
  10. 计算机科学与技术的感性认识,对计算机科学与技术学科的简单认识
  11. mysql中类型转换
  12. hdu 6118 最小费用可行流(注意与最大流的区别)
  13. 在电脑上如何剪辑音乐?
  14. PPT实现单页点名的方式
  15. 2021年海洋工程装备行业发展研究报告
  16. Matplotlib等高线图
  17. Listary 配置常用搜索
  18. virtualbox复制vdi
  19. Koa koa-combine-routers 分路由管理
  20. Windows 定时启动 关闭软件

热门文章

  1. loongarch架构的统信UOS+银河麒麟系统盘制作
  2. 系统的版本说明 VOL OEM VLK FPP RTM RC
  3. PaddleDetection-新增模型算法
  4. 每日CSS小练习 人物资料卡(图片hover之后展现人物介绍)
  5. iOS 判断是否越狱设备
  6. 清朝历代皇帝 庙号、谥号、姓名、生卒年、在位时间、年号
  7. AndroidStudio插件之PlantUML integration 画时序图
  8. JSP开发之JSP 标准标签库(JSTL)之JSTL函数endsWith()函数escapeXml()函数的使用
  9. css 头像右下角圆圈,CSS3 头像动效 - 悬停时透明圆形盖子旋转遮盖
  10. 微信小程序趋势及前景