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));
}