属性值必须在@Retryable中保持不变

时间:2017-08-30 11:53:05

标签: java spring spring-boot

我在班上有这个,我从application.properties

打电话给他们

A类

 @Value("${maxAttempts}")
    private String maxAttempt;
    @Value("${delay}")
    private String delay;
    @Value("${multiplier}")
    private String multiplier;
    @Value("${max-delay}")
    private String maxDelay;

我在这一行中使用它们

 @Retryable(maxAttempts=maxAttempt, value=RuntimeException.class, backoff = @Backoff(delay =delay,multiplier = multiplier, maxDelay = maxDelay))

application.properties

maxAttempt=3
delay=3
max-delay=9
multiplier=2

但是我得属性值必须是常数

修改

@Value("${maxAttempts}")
    private int maxAttempt;
    @Value("${delay}")
    private int delay;
    @Value("${multiplier}")
    private int multiplier;
    @Value("${max-delay}")
    private int maxDelay;
@Retryable(maxAttempts="${maxAttempts}", value=RuntimeException.class, backoff = @Backoff(delay ="${delay}",multiplier = "${multiplier}", maxDelay = "${max-delay}"))//    @Retryable(maxAttempts = 3, value = RuntimeException.class, backoff = @Backoff(delay = 10000))

我得到找到java lang字符串但需要int

1 个答案:

答案 0 :(得分:0)

从spring-retry-1.2.0开始,我们可以在@Retryable注释中使用可配置的属性。

使用“maxAttemptsExpression”,请参阅以下代码以了解用法,

  

@Retryable(maxAttemptsExpression =“#{$ {maxAttempts}}”,退避=   @Backoff(delayExpression =“#{$ {delay}}”))

如果使用任何小于1.2.0的版本,它将无法工作。此外,您不需要任何可配置的属性类。