通过控制器方法上的注释的Spring AOP不起作用

时间:2018-08-20 08:44:46

标签: java spring annotations aop spring-aop

注释

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    String value();
}

AOP

@Aspect
@Component
public class MyAspect {

@Around("@annotation(MyAnnotation)")
public Object aroundHandler(ProceedingJoinPoint joinPoint) throws Throwable {
    ...
}

控制器

@Controller
public class MyController {

    @RequestMapping(value="/hello", method=RequestMethod.GET)
    @ResponseBody
    @MyAnnotation(value="hello")
    public String hello() {
        return "hello";
    }
}

在上述情况下,我的aop无法正常工作...
它可以与其他方法配合使用,@Controller不会对其进行注释。
它可以与aop表达式和控制器方法配合使用。

是否可以通过控制器方法通过注释使用aop?

2 个答案:

答案 0 :(得分:0)

尝试一下:

@Around("@annotation(myAnnotation)")
public Object aroundHandler(ProceedingJoinPoint joinPoint,MyAnnotation myAnnotation) throws Throwable {
    // Do Something
}

答案 1 :(得分:0)

我认为您需要使用@within ...此博客文章可能会帮助https://www.productiveprogrammer.net/?p=49