728x90
클래스마다 순서 설정 가능 내부클래스로 관리
package hello.aop.order.aop;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.core.annotation.Order;
@Slf4j
public class AspectV5 {
@Aspect
@Order(2)
public static class LogAspect{
@Around("hello.aop.order.aop.Pointcuts.allOrder()")
public Object doLog(ProceedingJoinPoint joinPoint) throws Throwable{
log.info("[log] {}",joinPoint.getSignature());
return joinPoint.proceed();
}
}
@Aspect
@Order(1)
public static class TxAspect{
//hello.aop.order 패키지와 하위 패키지 이면서 클래스 이름 패턴이 *Service
@Around("hello.aop.order.aop.Pointcuts.orderAndService()")
public Object doTransaction(ProceedingJoinPoint joinPoint) throws Throwable {
try {
log.info("[트랜잭션 시작] {}", joinPoint.getSignature());
Object result = joinPoint.proceed();
log.info("[트랜잭션 커밋] {}", joinPoint.getSignature());
return result;
} catch (Exception e) {
log.info("[트랜잭션 롤백] {}", joinPoint.getSignature());
throw e;
} finally {
log.info("[리소스 릴리즈] {}", joinPoint.getSignature());
}
}
}
}
728x90
'백엔드 > Spring(Boot)' 카테고리의 다른 글
swagger 파라미터 안보이게 하기 (0) | 2022.01.21 |
---|---|
스프링 AOP 포인트 컷 외부 설정 (0) | 2021.11.03 |
스프링 Swagger 설치 (0) | 2021.10.29 |
스프링 초기화 샘플 데이터 입력 (0) | 2021.10.18 |
스프링 API 리스트 전송 방법 (0) | 2021.10.18 |