Spring实战(六)自动装配的歧义性
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、创建自定义的限定符(略了…知道有这个功能就行)
Spring实战(六)自动装配的歧义性的更多相关文章
- Spring实战之处理自动装配的歧义性
仅有一个bean匹配所需的结果时,自动装配才是有效的.如果不仅有一个bean能够匹配结果的话,这种歧义性会阻碍Spring自动装配属性.构造器参数或方法参数.为了阐述自动装配的歧义性,假设我们使用@A ...
- Spring入门(八):自动装配的歧义性
1. 什么是自动装配的歧义性? 在Spring中,装配bean有以下3种方式: 自动装配 Java配置 xml配置 在这3种方式中,自动装配为我们带来了很大的便利,大大的降低了我们需要手动装配bean ...
- spring装配---处理自动装配的歧义性
一.歧义性 当我们使用spring的注解进行自动装配bean时,如果不仅有一个bean能够匹配结果的话,会抛出NoUniqueBeanDefinitionException: 例如本例中 当sprin ...
- spring学习总结——高级装配学习二(处理自动装配的歧义性)
我们已经看到如何使用自动装配让Spring完全负责将bean引用注入到构造参数和属性中.自动装配能够提供很大的帮助.不过,spring容器中仅有一个bean匹配所需的结果时,自动装配才是有效的.如果不 ...
- Spring-处理自动装配的歧义性
自动装配可以对依赖注入提供很大帮助,因为它会减少装配应用程序组件时所需的显式装配的数量. 不过,仅有一个bean匹配所需的结果时,自动装配才是有效的.如果不仅有一个bean能够匹配的话,这种歧义性会阻 ...
- SpringInAction--Bean自动装配的歧义性处理
在前面,学习如何装配Bean的时候,或许会发现,有的同类型的Bean智能配置一个 如下: package com.bean.java; import org.springframework.conte ...
- Spring处理自动装配的歧义性
1.标识首选的bean 2.使用限定符@Qualifier 首先在bean的声明上添加@Qualifier 注解: @Component @Qualifier("cdtest") ...
- Spring实战3:装配bean的进阶知识
主要内容: Environments and profiles Conditional bean declaration 处理自动装配的歧义 bean的作用域 The Spring Expressio ...
- Spring 由构造函数自动装配
Spring 由构造函数自动装配,这种模式与 byType 非常相似,但它应用于构造器参数. Spring 容器看作 beans,在 XML 配置文件中 beans 的 autowire 属性设置为 ...
随机推荐
- Zookeeper系列(十)zookeeper的服务端启动详述
作者:leesf 掌控之中,才会成功:掌控之外,注定失败.出处:http://www.cnblogs.com/leesf456/p/6105276.html尊重原创,大家功能学习进步: 一.前 ...
- IntelliJ IDEA 2017 上传本地项目至码云
码云免费还挺好用,和Git类似.首先需要注册一个码云.这个就不介绍了. 点击加号,新建一个项目. 填写项目名称. 复制一下你的项目地址. 如图勾选.将项目至于git管理. 首先commit.快捷按 ...
- ARP 之 发送请求arp_solicit
概述 arp_solicit用来发送ARP请求,首先会根据ARP_ANNOUNCE参数来选取源地址,然后判断是否达到内核发送次数上限,未达到则调用内核arp_send_dst函数发送,如果达到上限,则 ...
- ci框架总结(一)
在进行数据库操作前一定要先初始化数据库类:$this->load->database(); 在model类中: class Myiapp_model extends CI_Model{ p ...
- 企业SOA架构案例分析
面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来.接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台. ...
- 在编译内核之前到底应该使用make mrproper,make distclean,make clean中的哪个命令呢?
1. 先找到描述这三个命令的相关信息 在内核目录下使用make help命令可以获取相关信息,信息如下: Cleaning targets: clean - Remove most generated ...
- 控制器Controller
1) org.springframework.web.servlet.mvc.ParameterizableViewController 如果请求是/hello.action的请求路径,则直接跳转到 ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_3-05 服务注册和发现Eureka Server搭建实战
笔记 5.服务注册和发现Eureka Server搭建实战 简介:使用IDEA搭建Eureka服务中心Server端并启动,项目基本骨架介绍 官方文档:http://clou ...
- java+ueditor word粘贴上传
最近公司做项目需要实现一个功能,在网页富文本编辑器中实现粘贴Word图文的功能. 我们在网站中使用的Web编辑器比较多,都是根据用户需求来选择的.目前还没有固定哪一个编辑器 有时候用的是UEditor ...
- 手写web框架之实现Bean容器
实现Bean容器 使用ClassHelper可以获取所加载的类,但无法通过类来实例化对象,因此我们需要提供一个反射工具类,让它封装java反射相关的API,对外提供更好用的工具方法.将该类命名为 ...