Spring throwsAdvice的处理Action的方式

cjoy4856 2012-06-07 11:26:52
由于本人想通过spring的AOP的throwsAdvice 来记录操作的异常。但是我使用了这个方式配置,没有成功,老是出现异常。
异常信息:
java.lang.NoSuchMethodException: $Proxy51.loginInSys()
真正的应该是:login.loginInSys()----》login是loginAction loginInSys是一个方法名称

1.不使用这个AOP系统运行
2.将这个AOP的切入点设置到DAO 或是Servcie中 系统都能正常运行
这个说明我的throwsAdvice的实现应该是没有问题,出现的问题就是配置pointCut的设置有问题
配置:
<aop:pointcut expression="execution(* com.aa.bb.**.action.*Action.*(..))" id="exPoint" />
<aop:advisor advice-ref="throwsAdvice" pointcut-ref="exPoint" />
<bean id="throwsAdvice" class="实现类"/>
请大家给予好的方法。谢谢
...全文
216 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjoy4856 2012-06-08
  • 打赏
  • 举报
回复
哦,清楚咯!!!谢谢的讲解
古布 2012-06-07
  • 打赏
  • 举报
回复
aop:config 加上 proxy-target-class="true" 试试

古布 2012-06-07
  • 打赏
  • 举报
回复
jdk代理只创建出来的对象只有你实现的接口里面的方法,
loginInSys是LZ自己定义的
cjoy4856 2012-06-07
  • 打赏
  • 举报
回复
默认这个我清楚,但是就是不知道为什么使用CGLIB去创建代理没有出现异常,但是使用JDK去创建代理就会有异常。我一直不清楚的就是这个问题。我看spring的官方的文档说的是:1.实现了至少一个接口以上的使用JDK;2.没有实现接口的用,方法中使用了final的方法的并且要用advice的使用CGLIB.
我的action是继承了ActionSupport 这个类实现了多个接口。按照上面的说明去,设置的话,就会报错。这个我一直都想不通。还望你解释一下。谢谢
古布 2012-06-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
引用楼主 的回复:
由于本人想通过spring的AOP的throwsAdvice 来记录操作的异常。但是我使用了这个方式配置,没有成功,老是出现异常。
异常信息:
java.lang.NoSuchMethodException: $Proxy51.loginInSys()
真正的应该是:login.loginInSys()----》login是loginAction login……

……
[/Quote]
Spring默认使用JDK代理实现接口的实现类。
cjoy4856 2012-06-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
由于本人想通过spring的AOP的throwsAdvice 来记录操作的异常。但是我使用了这个方式配置,没有成功,老是出现异常。
异常信息:
java.lang.NoSuchMethodException: $Proxy51.loginInSys()
真正的应该是:login.loginInSys()----》login是loginAction login……
[/Quote]
能解释一下吗?
CGLIB可以代理的是类(无接口) JDK代理实现接口的实现类。
但是按照这种解释的话,我就可以不去设置了。
望你不吝赐教!!谢谢

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧