1、Spring进行自动装配时碰到的bean歧义性问题。

  在进行自动装配时,只有仅有一个bean匹配所需结果时,才是可行的。

  如果不仅仅一个bean能够匹配结果,例如一个接口有多个实现,这种歧义性会阻碍Spring自动装配属性、构造器参数或者方法参数。

  (虽然在实际中,这种歧义性问题很罕见,通常所需的接口只有一个实现类。)

  2、Spring提供的解决方案

    A. 将可选bean中的某一个设为首选(primary)的bean;

    B. 使用限定符,使得Spring可选的bean减少为一个(only one)。

  3、solution A---使用@Primary

  Spring注解:

@Component
@Primary
public class IceCream implements Dessert{...}

  JavaConfig:

@Bean
@Primary
public Dessert iceCream(){
return new IceCream();
}

  XML中:

<bean id="iceCream" class="xxx.xxx.IceCream" primary="true" />  

  4、solution B---限定符@Qualifier("要注入的bean的ID")

//最简单的用法
@AutoWired
@Qualifier("iceCream")
public void setDessert(Dessert dessert){
this.dessert=dessert;
}

  5、创建自定义的限定符(略了…知道有这个功能就行)

最新文章

  1. 数据结构:栈 顺序表方法和单链表方法(python版)
  2. Counting Bits -leetcode
  3. LEfSe分析
  4. 功能强大支持64位操作系统的转Flash软件(doc转swf):Print2Flash
  5. 真机下, 如何在File Explorer里看data下的数据?
  6. RAC分解步骤之一,在oracle linux 4u4上安装oracle 10.2.0.1.0操作日志
  7. NET 2015
  8. 关于npm安装全局模块,require时报Error: Cannot find module &#39;XXX&#39;的解决办法
  9. LINUX文件操作命令
  10. WebApi 身份认证解决方案:Basic基础认证
  11. Shell-仅保留最近3天的备份文件: find . -name &quot;*.sql&quot; -mtime +3 -ls -exec rm {} \;
  12. Reinforcement Learning: An Introduction读书笔记(4)--动态规划
  13. [2017-7-28]Android Learning Day7
  14. ipone mac真机调试
  15. spark-1
  16. List 比较大小
  17. Delphi maskedit控件的掩码含义及用法方法
  18. Win10 快捷命令收集
  19. 使用CSDN-markdown编辑器
  20. bayes公式 - 再从零开始理解

热门文章

  1. HTTP缓存机制和原理
  2. 【软件工程】Beta冲刺(3/5)
  3. outlier异常值检验算法之_箱型图(附python代码)
  4. @Transactional(事务讲解)和springboot 整合事务
  5. [go]socket编程
  6. 表的操作管理和 MySQL 的约束控制
  7. HTTP 与 HTTPS协议
  8. 消息队列 RabbitMQ 入门介绍
  9. RabbitMQ学习之:(十一)AMQP.0-10规范,中文翻译1,2,3章 (转载)
  10. [git]使用Idea创建一个git项目