스프링 AOP 실전 예제

justindevcode·2024년 4월 8일
0

스프링 AOP

목록 보기
3/22
post-thumbnail
post-custom-banner

스프링 AOP 실전 예제

실전에서 사용하는 AOP적용법을 간단하게 알아보자

EX 예외터지면 해당함수를 일정 횟수 반복하는 AOP

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Retry {
 int value() default 3;
}
  1. 붙여줄 어노테이션을 만들어준다.
@Slf4j
@Aspect
public class RetryAspect {
 
 @Around("@annotation(retry)")
 public Object doRetry(ProceedingJoinPoint joinPoint, Retry retry) throws
Throwable {
 log.info("[retry] {} retry={}", joinPoint.getSignature(), retry);
 int maxRetry = retry.value();
 Exception exceptionHolder = null;
 for (int retryCount = 1; retryCount <= maxRetry; retryCount++) {
 try {
 log.info("[retry] try count={}/{}", retryCount, maxRetry);
 return joinPoint.proceed();
 } catch (Exception e) {
 exceptionHolder = e;
 }
 }
 throw exceptionHolder;
 }
}
  1. 해당 어노테이션이 붙은 코드를 일정횟수 반복하게 하는 @Aspect를 만들어준다.
@Repository
public class ExamRepository {
 @Trace
 @Retry(value = 4)
 public String save(String itemId) {
 //...
 }
}
  1. 사용할 함수에 붙여준다.
@SpringBootTest
@Import({TraceAspect.class, RetryAspect.class}) //TraceAspect.class이건 또다른 예시임
public class ExamTest {
}
  1. Bean등록을 까먹지않는다.

  2. 사용해주면 끝

이런식으로 어노테이션형식으로 @Aspect만 만들어준후 가져다 붙이고 Bean으로 등록만하면 끝이다.

profile
("Hello World!");
post-custom-banner

0개의 댓글