问题: 在spring相关项目启动的时候,报错相关内容为Can not set field to $Proxy。
原因:因为JDK实现动态代理业务的时候,只能针对接口进行定义。然而对于类需要进行代理,需要使用到CGLib。CGLib采用了非常底层的字节码技术,其原理是通过字节码技术为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。JDK动态代理与CGLib动态代理均是实现Spring AOP的基础。正是由于在代码中使用了类代理,但是配置不正确,所以报错。
解决方法:在XML配置文件中加入 proxy-target-class=”true” 配置。例如:
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
或者
<aop:config proxy-target-class="true">