首页 > 解决方案 > 如何使用`@Backoff`注释中的属性文件中的属性来自定义延迟时间?

问题描述

如何使用@Backoff注释中属性文件中的属性来自定义延迟时间?该属性只接受一个常量作为值。我尝试someProperty使用构造函数注入来初始化字段,但这无济于事,IntellijIDEA 显示一条消息:“属性值必须是常量”。

此代码不会编译:

public class SomeClass {

    private final long someProperty;

    public SomeClass (@Value("${someProperty}") Long someProperty) {
        this.someProperty = someProperty;
    }

    @Retryable(value = RuntimeException.class, maxAttempts = 2, 
               backoff = @Backoff(delay = someProperty))
    public SomeObject getSomeObject() {
        return new SomeObject();
    }
}

我可以使用delayExpression这样的属性:

@Retryable(value = RuntimeException.class, maxAttempts = 2, 
           backoff = @Backoff(delayExpression = "${someProperty}"))

标签: javaspringspring-retry

解决方案


推荐阅读