我目前正在尝试使用aspectj和spring aop围绕对HttpServletResponse.sendRedirect(api文档http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.html )的调用添加一个切入点。类和切入点的代码如下:
@Aspect
@Log4j
class ExampleAspect {
@Before("execution(* javax.servlet.http.HttpServletResponse.sendRedirect(..))")
void logRedirectBeforeSending() {
log.warn('holy cow batman, its a redirect!')
}
}
目前虽然上面的代码可以编译,但它实际上并没有执行(这可以从日志中缺少警告输出和建议代码中的调试断点永远不会被击中来证明)。
虽然为了简单起见我在这里省略了它们,但方面包含其他正确触发的切入点,所以我已经排除了方面配置作为潜在原因(这就是为什么我不包括我的 spring bean 配置)。
此外,我通过调试仔细检查了在测试切入点时正在调用实现 HttpServletResponse.sendRedirect() 的类(如果有帮助,则调用的实现类之一是 org.apache.catalina.connector.Response https://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/catalina/connector/Response.html)。
在围绕接口定义切入点时,我的切入点定义中是否缺少某些内容?最好我可以从 Spring AOP 文档中看出它不需要任何特殊的语法。
我一直在玩切入点定义的变化,但还没有运气。
总而言之,我被难住了,有什么想法吗?