it-source

Spring Boot to Spring Retry 주석에서 구성 속성을 주입하는 방법은 무엇입니까?

criticalcode 2023. 7. 5. 20:48
반응형

Spring Boot to Spring Retry 주석에서 구성 속성을 주입하는 방법은 무엇입니까?

스프링 부트 애플리케이션에서 아래와 같이 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;
  }

의 값을 주입하려면 어떻게 해야 합니까?my.app.maxAttempts그리고.my.app.backOffdelaySpringRetry 주석으로?아래 예제에서 값을 바꾸려고 합니다.10maxAttempts 및500Lbackoff 값과 구성 속성의 해당 참조.

@Retryable(maxAttempts=10, include=TimeoutException.class, backoff=@Backoff(value = 500L))

spring-retry-1.2.0부터 @Retryable 주석에서 구성 가능한 속성을 사용할 수 있습니다.

"maxAttemptsExpression"을 사용합니다. 사용법은 아래 코드를 참조하십시오.

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

1.2.0보다 작은 버전을 사용하는 경우에는 작동하지 않습니다.또한 구성 가능한 속성 클래스도 필요하지 않습니다.

표현식 속성에 기존 콩을 사용할 수도 있습니다.

    @Retryable(include = RuntimeException.class,
           maxAttemptsExpression = "#{@retryProperties.getMaxAttempts()}",
           backoff = @Backoff(delayExpression = "#{@retryProperties.getBackOffInitialInterval()}",
                              maxDelayExpression = "#{@retryProperties.getBackOffMaxInterval" + "()}",
                              multiplierExpression = "#{@retryProperties.getBackOffIntervalMultiplier()}"))
    String perform();

    @Recover
    String recover(RuntimeException exception);

어디에

재시도 속성

사용자의 경우와 같이 재시도 관련 속성을 보유한 사용자의 빈입니다.

아래와 같이 스프링 EL을 사용하여 속성을 로드할 수 있습니다.

@Retryable(maxAttempts="${my.app.maxAttempts}", 
  include=TimeoutException.class, 
  backoff=@Backoff(value ="${my.app.backOffDelay}"))

언급URL : https://stackoverflow.com/questions/43143806/how-to-inject-config-properties-in-spring-boot-to-spring-retry-annotation

반응형