私はSpring BootとSpring Initializrを使って簡単なWebアプリケーションを作成し、@Aspectと@Aroundというアドバイスを書こうとしました。Spring AOP:aspect @Aroundが動作しない
私はコントローラに私のカスタム注釈@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
}
}
だから、私の目標は、ということです:
プロジェクトはここにある
@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);
}
'inTry()'は常に例外をスローします。それは意味をなさないでしょうか? – kriegaex
これは単なる例です。私は必要な場所で実際のプロジェクトを持っています。外部リソースが利用できない場合、「再試行」機能を実装する必要があります。 –