새소식

반응형
Spring

[Spring] @Retryable @Transational 적용 순서

  • -
반응형

spring-retry의 2.0.1 버전부터는 @EnableRetry 어노테이션에 order 설정이 추가되었다.

 

@Retryable의 order 기본값은 Ordered.LOWEST_PRECEDENCE - 1 

@Transational의 order 기본값은 Ordered.LOWEST_PRECEDENCE

 

그렇기 때문에 @Transational 보다 먼저 @Retryable이 적용될 수 있다. 

 

@Retryable {
  @Transactional {
    Your method body
  } End of @Transactional
} End of @Retryable

 

위와 같은 순서로 적용되어서 만약 내부 로직에 DB Operation이 있다면

retry시에 기존 Transaction과는 다른 Transaction으로 적용이 될 수 있게 된다. 

 

@Order

우선순위를 가장 높게 설정하고 싶은 경우

  • order에 숫자가 작을수록 우선순위가 높다 
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
public ObjectMapper objectMapper() {
  // ...
}
int HIGHEST_PRECEDENCE = Integer.MIN_VALUE;

 

우선순위를  가장 낮게 설정하고 싶은 경우

  • order에 숫자가 클수록 우선순위가 낮다 
@Bean
@Order(Ordered.LOWEST_PRECEDENCE)
public ObjectMapper objectMapper() {
  // ...
}
int LOWEST_PRECEDENCE = Integer.MAX_VALUE;
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.