今天配置spring的普通类管理,发现配置了
<aop:aspectj-autoproxy proxy-target-class="true"/>
可以正常使用cglib,而假如再配置上
<bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator" />
就会报错!
java.lang.ClassCastException: $Proxy14 cannot be cast to com.xxx
求说明 本人知道aop:aspectj-autoproxy proxy-target-class= true是使用cglib强制动态代理,但是为啥加入后面的就会报错呢?
AnnotationAwareAspectJAutoProxyCreator这个配置究竟对spring影响了什么呢?
假如两个都不配置,也不会报错,说明spring可以自动切换cglib和jdk 这个本人明白一点。
假如只配置AnnotationAwareAspectJAutoProxyCreator也会同样错,这是不是说明AnnotationAwareAspectJAutoProxyCreator配置强制使spring使用jdk代理?但是一般的切面也有用到,假如使用是强制jdk代理,那些没实现接口的不都要报错吗?求指导释呀
解决方案
5
动态代理好像必须要实现接口吧。
5
50
应该这2个只要配置上一个就可以 吧。 具体本人没测试
10
你这错误是 JDK产生代理,但是却没有用接口接收,导致转换异常, 你下面那个配置好像也是产生代理,原因是你的类com.xxx实现了接口,所以默认采用JDK代理
30