java – Aspectj没有捕获spring框架中的所有事件?
发布时间:2020-12-15 00:53:46 所属栏目:Java 来源:网络整理
导读:我的项目基于 spring framework 2.5.4.我尝试为某些控制器添加方面(我使用aspectj 1.5.3). 我在application-servlet.xml中启用了自动代理,只是将这些行粘贴到xml文件的末尾: aop:aspectj-autoproxy /bean id="auditLogProcessor" class="com.example.bg.web
我的项目基于
spring framework 2.5.4.我尝试为某些控制器添加方面(我使用aspectj 1.5.3).
我在application-servlet.xml中启用了自动代理,只是将这些行粘贴到xml文件的末尾: <aop:aspectj-autoproxy /> <bean id="auditLogProcessor" class="com.example.bg.web.utils.AuditLogProcessor" /> 创建方面: package com.example.bg.web.utils; import org.apache.log4j.Logger; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; @Aspect public class AuditLogProcessor { private final static Logger log = Logger.getLogger(AuditLogProcessor.class); @After("execution(* com.example.bg.web.controllers.assets.AssetThumbnailRebuildController.rebuildThumbnail(..))") public void afterHandleRequest() { log.info("test111"); } @After("execution(* com.example.bg.web.controllers.assets.AssetThumbnailRebuildController.rebuildThumbnail(..))") public void afterRebuildThumbnail() { log.info("test222"); } } 我的控制器: class AssetAddController implements Controller class AssetThumbnailRebuildController extends MultiActionController 当我在方面顾问和调用控制器中设置制动点时,我只捕获afterHandleRequest()而不是afterRebildThumbnail() 注意 我代表我的朋友问这个问题,他的朋友无法访问SO beta,我也不知道它是什么. 编辑 确实有一些拼写错误,谢谢Cheekysoft.但问题仍然存在. 解决方法
你的断点没有被击中,因为你使用的是Spring的AOP Proxies.有关AOP代理如何特殊的说明,请参见
understanding-aop-proxies.
基本上,MVC框架将调用控制器代理上的handleRequest方法(例如你用作基类实现的MultiActionController),然后这个方法将对其rebuildThumbnail方法进行“内部”调用,但是这个不会通过代理,因此不会接受任何方面. (这与最终的方法无关.) 为了达到你想要的效果,通过加载时间编织(Spring支持非常好)来调查使用“真正的”AOP. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |