你的junit没有加载你的spring conf xml。
试试这个 :
@ContextConfiguration(locations = { "classpath:pathTo/applicationContext.xml"})
编辑:尝试删除限定符和/或在bean创建中添加name属性
第一个错误是因为你试图注入 DragonBallUserDaoJpa 代替 DragonBallUserDao 。为了能够添加缓存层,Spring在您的类上创建了一个代理。而这个代理实现了类的接口( DragonBallUserDao )然后委托实际班级( DragonBallUserDaoJpa )。
DragonBallUserDaoJpa
DragonBallUserDao
检索bean时遇到同样的问题。由于代理仅实现接口,因此无法将其强制转换为实现。所以 ClassCastException 。
ClassCastException
所以如果你在测试中这样做(你不需要限定符)
@Autowired private DragonBallUserDao dragonBallUserDao;
它应该做的伎俩。
另一个解决方案(但我认为它没有用)是强制Spring使用cglib来创建代理。这样,您的代理确实将延伸到具体类。你需要这样的东西: <aop:aspectj-autoproxy proxy-target-class="true" />
<aop:aspectj-autoproxy proxy-target-class="true" />
最后,你也可以摆脱界面,因为我非常怀疑你有很多这个DAO的实现。所以界面没用,只是添加噪音。删除它将强制Spring创建一个cglib代理,因为没有可用的接口。