如何在 Spring 重试中打开和关闭@Recover 方法?

How to switch on and off @Recover method in Spring Retry?

我希望根据属性文件中的标志切换 @Recover 方法 on/off。怎么做?

实际上,我没有使用注释(@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));
}

不可能。

但是,当然,您的 @Recover 方法可以根据 属性.

重新抛出(或不抛出)异常