Spring mvc 如何为annotation@Controller创建拦截器

Spring mvc 如何为annotation@Controller创建拦截器,spring-mvc,aspectj,interceptor,spring2.x,Spring Mvc,Aspectj,Interceptor,Spring2.x,我加入了一个现有的项目,该项目在spring mvc前端使用了两种机制: A) 控制器类扩展 org.springframework.web.servlet.mvc.SimpleFormController B) 控制器类使用注释@Controller 现在我发现了一个拦截器: @Aspect public class RequestMonitor { @Autowired private RequestMonitorService requestMonitorServic

我加入了一个现有的项目,该项目在spring mvc前端使用了两种机制:

  • A) 控制器类扩展 org.springframework.web.servlet.mvc.SimpleFormController
  • B) 控制器类使用注释@Controller
现在我发现了一个拦截器:

@Aspect
public class RequestMonitor {

    @Autowired
    private RequestMonitorService requestMonitorService;

    @Before("execution(* org.springframework.web.servlet.mvc.Controller+.handleRequest(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse))"
            + "&& args(request,response)")
    public void storeUserAccess(HttpServletRequest request, HttpServletResponse response) {
        requestMonitorService.storeUserAccess(request);
    }
}
谁捕获来自org.springframework.web.servlet.mvc.Controller的所有请求(机制A)

我如何适应拦截所有其他带有注释“@Controller”:org.springframework.stereotype.Controller(机制B)

您拥有该类。您可以扩展它并使用子类中的方法:

public boolean preHandle(HttpServletRequest request, 
        HttpServletResponse response, Object handler) throws Exception

public void postHandle(
        HttpServletRequest request, HttpServletResponse response, 
        Object handler, ModelAndView modelAndView)
        throws Exception
您需要注册您的拦截器,即:

<mvc:interceptors>
        <bean class="my.fully.qualified.package.RequestInterceptor" />
</mvc:interceptors>

我们使用Spring 2.5而不是3:(