[SPRING] Spring에서 config 속성을 삽입하는 방법 Spring에서 다시 시도 주석을 재 시도 하시겠습니까?
SPRINGSpring에서 config 속성을 삽입하는 방법 Spring에서 다시 시도 주석을 재 시도 하시겠습니까?
스프링 부트 응용 프로그램에서는 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.backOffdelay 값을 Spring 재시도 주석에 삽입하려면 어떻게해야합니까? 아래의 예제에서 maxAttempts 값과 500Lof 백 오프 값을 config 속성의 해당 참조로 바꿉니다.
@Retryable(maxAttempts=10, include=TimeoutException.class, backoff=@Backoff(value = 500L))
해결법
-
==============================
1.spring-retry-1.2.0을 보면 @Retryable 주석에서 구성 가능한 속성을 사용할 수 있습니다.
spring-retry-1.2.0을 보면 @Retryable 주석에서 구성 가능한 속성을 사용할 수 있습니다.
"maxAttemptsExpression"을 사용하십시오. 사용법은 아래 코드를 참조하십시오.
@Retryable(maxAttemptsExpression = "#{${my.app.maxAttempts}}", backoff = @Backoff(delayExpression = "#{${my.app. backOffDelay}}"))
1.2.0 미만의 버전을 사용하면 작동하지 않습니다. 또한 구성 가능한 속성 클래스가 필요하지 않습니다.
-
==============================
2.expression 속성에서 기존 bean을 사용할 수도 있습니다.
expression 속성에서 기존 bean을 사용할 수도 있습니다.
@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);
어디에
귀하의 경우처럼 재시도 관련 속성을 보유하고있는 귀하의 빈입니다.
-
==============================
3.아래처럼 Spring EL을 사용하여 속성을로드 할 수 있습니다 :
아래처럼 Spring EL을 사용하여 속성을로드 할 수 있습니다 :
@Retryable(maxAttempts="${my.app.maxAttempts}", include=TimeoutException.class, backoff=@Backoff(value ="${my.app.backOffDelay}"))
from https://stackoverflow.com/questions/43143806/how-to-inject-config-properties-in-spring-boot-to-spring-retry-annotation by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 커스텀 cxf 인터셉터에서 Spring Autowired를 사용하는 방법? (0) | 2019.02.23 |
---|---|
[SPRING] @PropertySource 및 UTF-8 특성 파일 (0) | 2019.02.23 |
[SPRING] SQL Server에서 날짜 추출 문제 (0) | 2019.02.23 |
[SPRING] 스프링 플럭스에 대한 HATEOAS / Mono response (0) | 2019.02.23 |
[SPRING] spring jdbc oracle을 사용하여 세션 시간대 설정 (0) | 2019.02.23 |