求指导释spring的动态代理

J2EE 码拜 8年前 (2016-09-20) 1185次浏览
今天配置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可以自动切换cglibjdk 这个本人明白一点。
假如只配置AnnotationAwareAspectJAutoProxyCreator也会同样错,这是不是说明AnnotationAwareAspectJAutoProxyCreator配置强制使spring使用jdk代理?但是一般的切面也有用到,假如使用是强制jdk代理,那些没实现接口的不都要报错吗?求指导释呀

解决方案

5

动态代理好像必须要实现接口吧。

5

50

引用:
Quote: 引用:

http://www.cnblogs.com/liuling/p/2014-8-23-001.html

这个本人能明白,只是不知道AnnotationAwareAspectJAutoProxyCreator这个东西是做什么用的。为什么加上这句话就报错呢?

应该这2个只要配置上一个就可以 吧。 具体本人没测试

10

你这错误是  JDK产生代理,但是却没有用接口接收,导致转换异常, 你下面那个配置好像也是产生代理,原因是你的类com.xxx实现了接口,所以默认采用JDK代理  求指导释spring的动态代理

30

http://blog.csdn.net/jiankunking/article/details/52143504
可以看看这个 但cglib是通过继承来实现的

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明求指导释spring的动态代理
喜欢 (0)
[1034331897@qq.com]
分享 (0)