我想问一下异常的根本原因:
Caused by: java.lang.ClassCastException: java.lang.Class cannot be cast to
java.lang.reflect.ParameterizedType
当我们让 Spring 为类生成代理(即proxy-target-class="true"
在事务管理器上设置)时,会在 Spring 中发生这种情况:
<tx:annotation-driven transaction-manager="transactionManager"
proxy-target-class="true"/>
并且当要代理的类是参数化类时,即
public class SomeDAOImpl<SomeEntity> implements SomeDAO ...
例如,完整的故事可以阅读这个问题:Abstract DAO pattern and Spring's "Proxy cannot be cast to ..." question!
问题:为什么Spring不能代理这个类?是因为它使用旧的代码生成库吗?因为类型擦除?如果SomeDAOImpl
不是泛型类,它会成功(我检查过)。
请不要这样回答:“你应该代理接口,而不是类”。我知道。