@Autowired与@Qualifer的使用区别备忘
2015-07-13 21:02
351 查看
原文链接:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%8E%A8%E8%8D%90/956.shtml
使用 @Autowired 注释进行byType注入,如果需要 byName(byName 就是通过 id 去标识)注入,增加 @Qualifier 注释
@Qualifer 如果没有的话,报的错如下:
no unique bean of type [org.springframework.transaction.PlatformTransactionManager] is defined:expected
single matching bean but found 2: [TransactionManager,
ImsTransactionManager]
原因:
比如配置文件中有二个 bean.
@Autowired 时,由于是 byType 注入,就不能识别,此时就需要再加上 @Qualifer 通过 id 去识别。
而如果没有使用 @Service 的话,报错如下:
no unique bean of type ..... expected
at least 1 matching bean
注意,这与上面的提示信息区别.
使用 @Autowired 注释进行byType注入,如果需要 byName(byName 就是通过 id 去标识)注入,增加 @Qualifier 注释
@Qualifer 如果没有的话,报的错如下:
no unique bean of type [org.springframework.transaction.PlatformTransactionManager] is defined:expected
single matching bean but found 2: [TransactionManager,
ImsTransactionManager]
原因:
比如配置文件中有二个 bean.
<bean id="jmstransactionmanager" class="org.springframework.jms.connection.jmstransactionmanager"> <property name="connectionfactory" ref="advancedconnectionfactory" /> </bean> <bean id="transactionmanager" class="org.springframework.jdbc.datasource.datasourcetransactionmanager"> <property name="datasource"> <ref bean="cpcdatasource" /> </property> </bean>表面看起来是不同类型的类,但是由于在 *service 里面注入的属性类型是 PlatformTransactionManager。由于上面的二个 bean 都实现了这个接口.这样
@Autowired 时,由于是 byType 注入,就不能识别,此时就需要再加上 @Qualifer 通过 id 去识别。
而如果没有使用 @Service 的话,报错如下:
no unique bean of type ..... expected
at least 1 matching bean
注意,这与上面的提示信息区别.
相关文章推荐
- 操作系统中的缓冲(buffer)
- jQuery学习笔记(一)——基础选择器、过滤选择器、表单选择器
- 前端开发值得推荐的各种资源
- JQuery——日期拾取器
- CSS3常用形状
- Node:快速排序
- 设置WordPress主题表单样式
- 移动web开发,12个触摸及多点触摸事件常用Js插件
- POJ 2492 A Bug's Life
- ZH奶酪:CSS中限制span显示字数
- 使用$route服务重复刷新AngularJS MVC的局部视图
- StringBuffer 实现语句反转
- jQuery插件开发之boxScroll与marquee
- Node:普通归并
- JSP 标准标签库(JSTL)之最常用的JSTL标签总结
- Codeforces Round #305 (Div. 1) B. Mike and Feet
- jQuery插件开发之windowScroll
- js获取项目的各个路径
- jquery get ajax 重复提交的奇怪问题
- JS的简单计算器