我希望基于属性文件中的标记来打开/关闭@Recover
方法。该怎么做?
实际上,我不是在使用注解(@Retryable
/ @Recover
),而是在使用RetryTemplate
。
解决方案
我将以下方法用作所有恢复调用的包装器方法。
private <T> T genericRecover(RetryContext context) {
if(this.useRecoverMethod) {
return null;
}
throw new RuntimeException(context.getLastThrowable());
}
从属性文件中读取useRecoverMethod
布尔标志。
public Resource<Camera> myRetyableMethod(Long cameraId) {
return retryTemplate.execute(context -> anApiCallMethod(param),
context -> genericRecover(context));
}
答案 0 :(得分:1)
不可能。
但是,当然,您的@Recover
方法可以根据该属性重新引发(或不引发)异常。