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

时间:2019-01-11 06:16:30

标签: java spring spring-retry

我希望基于属性文件中的标记来打开/关闭@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));
}

1 个答案:

答案 0 :(得分:1)

不可能。

但是,当然,您的@Recover方法可以根据该属性重新引发(或不引发)异常。