Java 如何在Spring重试中打开和关闭@Recover方法?
我希望根据属性文件中的标志打开/关闭Java 如何在Spring重试中打开和关闭@Recover方法?,java,spring,spring-retry,Java,Spring,Spring Retry,我希望根据属性文件中的标志打开/关闭@Recover方法。怎么做 实际上,我没有使用注释(@Retryable/@Recover),而是使用RetryTemplate 解决方案 我将以下方法用作所有恢复调用的包装器方法 private <T> T genericRecover(RetryContext context) { if(this.useRecoverMethod) { return null; } throw new Runtime
@Recover
方法。怎么做
实际上,我没有使用注释(@Retryable
/@Recover
),而是使用RetryTemplate
解决方案
我将以下方法用作所有恢复调用的包装器方法
private <T> T genericRecover(RetryContext context) {
if(this.useRecoverMethod) {
return null;
}
throw new RuntimeException(context.getLastThrowable());
}
这是不可能的
但是,当然,您的
@Recover
方法可以根据属性重新抛出异常(或不抛出异常)。这正是我所做的。我将用解决方案更新问题,谢谢!我已经用解决方案更新了这个问题。请让我知道我是否可以做任何其他事情来改进我的方法。看起来还好,只是你的恢复程序除了忽略错误之外什么都不做。也许这就是你想要的,但是,一般来说,人们想做其他事情,或者至少记录问题。
public Resource<Camera> myRetyableMethod(Long cameraId) {
return retryTemplate.execute(context -> anApiCallMethod(param),
context -> genericRecover(context));
}