如何在Spring Boot中将配置属性注入到Spring Retry注释中?

发布于 2021-02-02 11:45:15

在Spring Boot应用程序中,我在yaml文件中定义了一些配置属性,如下所示。

my.app.maxAttempts = 10
my.app.backOffDelay = 500L

还有一个示例豆

@ConfigurationProperties(prefix = "my.app")
public class ConfigProperties {
  private int maxAttempts;
  private long backOffDelay;

  public int getMaxAttempts() {
    return maxAttempts;
  }

  public void setMaxAttempts(int maxAttempts) {
    this.maxAttempts = maxAttempts;
  }

  public void setBackOffDelay(long backOffDelay) {
    this.backOffDelay = backOffDelay;
  }

  public long getBackOffDelay() {
    return backOffDelay;
  }

如何注入Spring
Retry注释的值my.app.maxAttemptsmy.app.backOffdelay?在下面的示例中,我想用配置属性的相应引用替换10maxAttempts和500Lbackoff值。

@Retryable(maxAttempts=10, include=TimeoutException.class, backoff=@Backoff(value = 500L))
关注者
0
被浏览
89
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

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

    使用“ maxAttemptsExpression”,有关用法,请参见以下代码,

     @Retryable(maxAttemptsExpression = "#{${my.app.maxAttempts}}",
     backoff = @Backoff(delayExpression = "#{${my.app. backOffDelay}}"))
    

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看