BeanCreationException: No unique bean of type


我定义了一个基类接口BaseDao下面有些update\save的方法; 

然后我用一个BaseDaoImpl去实现这个接口;好啦然后我现在有两个Dao接口,一个ADao extends BaseDao,一个BDao extends BaseDao; 然后再有这两个Dao的实现: ADaoImpl extends  BaseDaoImpl implements ADao; BDaoImpl extends BaseDaoImpl  implements BDao; 

这两个实现都加了@repository。结果就是启动错: 

No unique bean of type [com.a.b.BaseDao] is defined: expected single matching bean but found 2: [aDaoImpl, bDaoImpl] 


出现这个异常的原因是因为我用了@Autowird这个注解这个注解是根据类型的方式搜索匹配的找到了两个相符的依赖类对于上述配置就是找到了basedao 的两个 bean: adaoimpl , bdaoimpl。 


对于这种同类型class有多个实例的解决方案的一种方案是继续延用autowired不过通过@Qualifier指明是哪个名字的bean,如: 

Java代码  
  1. @Autowired  
  2.  public void setADao(@Qualifier("aDaoImpl") ADao adao) {  
  3.   this.adao= adao;  
  4.  }  


另外一种方案是使用@Resource这个注解其功能与@autowired差不多但是可以通过指定bean name或bean type注入相关bean,默认是按name注入比autowired灵活很多如: 
Java代码  
  1. @Resource  
  2. private ADao aDaoImpl;  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值