我使用 Spring Boot 和 Spring Initializr 制作了一个简单的 Web 应用程序,并尝试使用@Around建议编写@Aspect。
当我将自定义注释@RetryOnFailure添加到控制器的端点方法时 - 它可以工作,但是当我将此注释添加到由控制器端点执行的控制器方法时 - 它不起作用。我花了很多时间来理解这种行为的原因,但没有任何结果。所以请帮忙。
项目位于此处:https : //github.com/zalizko/spring-aop-playground
@Aspect
@Component
public final class MethodRepeater {
@Around("execution(* *(..)) && @annotation(RetryOnFailure)")
public Object wrap(final ProceedingJoinPoint joinPoint) throws Throwable {
// code is here
}
}
Run Code Online (Sandbox Code Playgroud)
所以,我的目标是:
@RequestMapping
public String index() {
inTry();
return "OK";
}
@RetryOnFailure(attempts = 3, delay = 2, unit = TimeUnit.SECONDS)
public void inTry() {
throw new RuntimeException("Exception in try " + ++counter); …Run Code Online (Sandbox Code Playgroud)