SpringInAction 学习笔记:自动装配歧义性处理
来源:互联网 发布:蜗牛卡充值话费软件 编辑:程序博客网 时间:2024/06/05 02:35
处理自动装配的歧义性
仅有一个bean匹配所需结果时自动装配才是有效的
@Autowiredpublic void setDessert(Dessert dessert){ this.dessert = dessert;}@COmponentpublic class Cake implements Dessert{...};@COmponentpublic class Cookies implements Dessert{...};@COmponentpublic class IceCream implements Dessert{...};这时Spring无法做出选择而抛出异常NoUniqueBeanDefinitionException
spring提供了多种可选方案来解决这样的问题
- 将可选bean中的某一个设为首选的bean
- 使用限定符将spring可选范围缩小到只有一个bean可以通过@Primary注解来表达最喜欢的方案
@Component@Primarypublic class IceCream implements DEssert{...}或者当显示的配置IceCream时@Bean@Primarypublic Dessert icecream(){ return new IceCream();}或在xml中<bean id="icecream" class="..." primary="true" />
限定自动装配的bean
@Qualifier注解是使用限定符的主要方式,它可与@Autowired 和 @Inject 注解协同使用
@Autowired@Qualifier("iceCream") // 括号内为bean的IDpublic void setDessert(Dessert dessert){ this.dessert = dessert;}但此时限定符和bean的ID是紧耦合的
创建自定义限定符
需要做的就是在bean的声明上添加@Qualifier注解
@Component@Qualifier("cold")public class IceCream implements Dessert{ ...}然后在注入时@Autowired@Qualifier("cold")public Dessert iceCream(){ return new IceCream();}Java不允许同一条目上出现相同类型的多个注解,所以@Qualifier("") 不能写多个来缩小范围但还可以写 使用@Qualifier注解的自定义注解来缩小范围@Target({ElementType.CONSTRUCTOR,Element.FILED,Element.METHOD,Element.TYPE})@Retention(RetentionPolicy.RUNTIME)@Qualifierpublic @interface Clod{};@Target({ElementType.CONSTRUCTOR,Element.FILED,Element.METHOD,Element.TYPE})@Retention(RetentionPolicy.RUNTIME)@Qualifierpublic @interface Creamy{};@Component@Code@Creamypublic class IceCream implements Dessert{ ...}@Autowired@Cold@Creamypublic Dessert iceCream(){ return new IceCream();}
0 0
- SpringInAction 学习笔记:自动装配歧义性处理
- Spring学习笔记之处理自动装配的歧义性
- SpringInAction 学习笔记:高级装配
- Spring-处理自动装配的歧义性
- spring处理自动装配的歧义性
- 十四、处理自动装配的歧义性
- 处理自动装配的歧义性
- 处理自动装配的歧义性
- Spring journey -- 处理自动装配歧义性问题
- 高级装配 —— 如何处理自动装配的歧义性?
- spring--bean自动装配的歧义性
- SpringInAction第3版学习日记(1)-装配Bean
- Spring学习笔记-自动装配
- spring学习笔记(自动装配)
- Spring 全注解配置 bean 和 调用 (4) @Primary 自动装配歧义性
- Spring 全注解配置 bean 和 调用 (5) @Qualifier 自动装配歧义性消除
- Spring 全注解配置 bean 和 调用 (6) 自定义注解 自动装配歧义性消除
- SpringInAction学习笔记:运行时值注入
- 如何使用JobScheduler
- Dubbo分布式服务框架入门
- java 面试心得总结-BAT、网易
- 用Raspberry Pi 2和GPS接收机做一个精确的NTP服务器
- 全阶BOM算法
- SpringInAction 学习笔记:自动装配歧义性处理
- Ubuntu 14.04安装JDK1.8.0_25与配置环境变量过程笔记。
- IDLE中如何换行?如何运行IDLE程序
- 【jQuery】换肤
- 数组1
- HDU 1361 Parencodings (模拟)
- java使用第三方工具BeanUtils实现对象的复制
- 微信投票怎么刷票之微信投票如何刷票方法
- Java Web前端到后台常用框架介绍