问题描述
今天部署环境的时候一直部署失败,出现报错如下:
‘PetWarRewardDao’ available: expected single matching bean but found 2: PetWarRewardDao,petWarRewardDaoSqlImpl
但是我很纳闷,PetWarRewardDao
的两个实现类我都标了注解
然后使用的地方也是用了@Resource
,为什么还会报错呢?
原因
原来@resource
虽然是按照名字去注入,它默认是按照名称注入,如果没有指定特别的名称,那么它会以变量名,也就是petWarRewardDao
作为name。而bean容器中只有PetWarRewardDao
。
解决
将@Repository("PetWarRewardDao")
换为@Repository("petWarRewardDao")