在调用任何bean / controller之前,如何在Spring AOP / Aspectj中拦截请求?

时间:2012-09-28 10:13:56

标签: spring java-ee spring-webflow

我必须在调用任何bean / controller方法之前记录请求参数/表单数据。 我的应用程序是用spring web flow编写的。

实施它的最佳方法是什么?

3 个答案:

答案 0 :(得分:0)

你不需要AOP / Aspectj,你可以用Servlet Filter

来做到这一点

答案 1 :(得分:0)

我认为Spring AOP可以帮助你。

定义一个Pointcut表达式,选择所有控制器方法并使用@Before建议记录参数

示例:

@Before("execution(@controllers.package * *(..))")
public void logArguments(JoinPoint joinPoint) throws Throwable {
    logger.debug("Entering method - Arguments : " + joinPoint.getArgs());
}

答案 2 :(得分:0)

如果需要在到达控制器之前拦截每个请求,可以使用拦截器。您必须使用HandlerInterceptorAdapter扩展您的类。您可以覆盖它的preHandle方法,以在每个请求到达控制器之前拦截它们。您将可以访问此方法中的请求和响应对象以更改目标页面或URL。