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反射,但是还是不太清楚具体机制。
跃然一笑
相关分类