为了账号安全,请及时绑定邮箱和手机立即绑定

为什么spring使用自动注入实现类的时候会报错?

为什么spring使用自动注入实现类的时候会报错?

临摹微笑 2019-03-01 10:30:23
TaskDao是接口,TaskDaoImpl是TaskDao的实现类,下面语句正常: @Autowired protected TaskDao taskDao ; 如果自动注入实现类就会报错: @Autowired protected TaskDaoImpl taskDaoImpl; 报错如下: Bean named 'TaskDaoImpl' must be of type [com.changetech.dao.impl.TaskDaoImpl], but was actually of type [$Proxy98] 但是如果让TaskDaoImpl不去实现接口,直接是普通的类,那么也可以正常运行。 大概能猜到是因为前者使用jdk动态反射,后者能成功是cglib反射,但是还是不太清楚具体机制。
查看完整描述

4 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

可以了解一下IOC容器启动过程的源码,跟踪一下AbstractAutowireCapableBeanFactory中applyPropertyValues方法,就熟悉注入的过程了

查看完整回答
反对 回复 2019-03-01
  • 4 回答
  • 0 关注
  • 1091 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信