java - @Around Controller 的建议不起作用

标签 java spring-security spring-boot spring-aop

我正在尝试在 Spring boot 应用程序(具有 Spring 安全性)中使用 AOP 来记录 Controller 方法,但无法成功。添加方面相关代码后,它不会返回任何异常,并且处理程序方法无法检测到:

Controller 方法:

@RequestMapping(value="/index", method = RequestMethod.GET)
public ModelAndView welcome() {
    ModelAndView modelView = new ModelAndView();
    modelView.setViewName("index");
    return modelView;
}

方面:

@Pointcut("within(@org.springframework.web.bind.annotation.RequestMapping *)")
    public void requestMapping() {}

    @Around("execution(* com.hms.controllers.HomeController.*(..)) && @annotation(requestMapping)")
    public void aroundControllerMethod(ProceedingJoinPoint joinPoint, RequestMapping requestMapping) {
        System.out.println("Testing aroundController: " + joinPoint.getSignature().getName());
}

失败并显示以下日志:

2015-11-18 12:57:41.310 DEBUG 6180 --- [nio-8080-exec-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Looking up handler method for path /index
2015-11-18 12:57:41.310 DEBUG 6180 --- [nio-8080-exec-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Did not find handler method for [/index]

如果与方面相关的代码被注释,索引页面返回没有任何问题

有什么见解吗?

最佳答案

Controller 已由 spring mvc 代理,并且可能未安装周围建议。几年前我遇到了同样的问题,并使用日志过滤器很快解决了它。您还可以定义一个HandlerInterceptor

关于java - @Around Controller 的建议不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33774102/

相关文章:

java - 我如何使用 ldap 和 spring security 获取登录用户的电子邮件

java - Google App Engine Standard env - 找不到 Controller 方法 - Spring Boot 应用程序

java - 如何用 GWT 模拟 Java 类

java - 绕过 Tesseract 预处理

java - 具有用户名和 ID 的 Spring Security RememberMe 函数

java - 如何使用已在另一个 .xml 文件中配置的 bean?

java - 有没有办法在同一个项目中同时使用 auth0-spring-security-api 和 java-jwt?

java - 在 spring-data-mongoDB 中创建 MongoTransactionManager bean 时出错

java - 一起使用数据提供程序和 TextNG XML

java - 一旦达到 256 个元素,Flux.range 将等待发出更多元素