Spring AOP 配置after-returning时异常问题

来源:互联网 发布:sev18软件下载 编辑:程序博客网 时间:2024/06/06 08:28

调试代码的时候发现如果在使用spring aop时想要在方法返回后取得返回值,会出现illegalargument异常,搜索了很多地方但都不是一个问题。
当xml配置为

<aop:after-returning method="afterReturning" pointcut-ref="servicePointcut" />

程序可以正常在切点后面加入增强事务,但是一旦添加了returning属性Spring就报异常了,经过检查并不是常说的增强方法没有返回值对应的参数等原因,后面查看文档发现spring实现aop采用了两种方法,一种是JDK自带的动态代理,一种是CGLib动态代理,其中JDK自带的动态代理是针对接口的动态代理,而CGLib是对普通类的动态代理。高版本spring自动根据运行类选择 JDK 或 CGLIB 代理。在给需要增强的方法添加接口之后,异常解决。

注:很神奇的事情在于,当我去掉接口想重现异常的时候,不论怎么改都不能再重现之前的异常,程序依旧能够正常执行。