TaskDao是接口,TaskDaoImpl是TaskDao的實(shí)現(xiàn)類,下面語(yǔ)句正常:
@Autowired
protected TaskDao taskDao ;
如果自動(dòng)注入實(shí)現(xiàn)類就會(huì)報(bào)錯(cuò):
@Autowired
protected TaskDaoImpl taskDaoImpl;
報(bào)錯(cuò)如下:
Bean named 'TaskDaoImpl' must be of type [com.changetech.dao.impl.TaskDaoImpl], but was actually of type [$Proxy98]
但是如果讓TaskDaoImpl不去實(shí)現(xiàn)接口,直接是普通的類,那么也可以正常運(yùn)行。
大概能猜到是因?yàn)榍罢呤褂胘dk動(dòng)態(tài)反射,后者能成功是cglib反射,但是還是不太清楚具體機(jī)制。
4 回答

躍然一笑
TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
可以了解一下IOC容器啟動(dòng)過(guò)程的源碼,跟蹤一下AbstractAutowireCapableBeanFactory中applyPropertyValues方法,就熟悉注入的過(guò)程了
添加回答
舉報(bào)
0/150
提交
取消