Transaction Log 출력하기

·

1 min read

Transaction Logging AOP

포인트 컷(Pointcut)

  • 조인 포인트 중에서 어드바이스가 적용될 위치를 선별하는 기능

  • 어떤 메소드에 어드바이스를 적용할지를 결정

  • 스프링 AOP는 프록시 방식을 사용하므로 메소드 실행 지점만 포인트 컷으로 선별 가능
    ➔ 메소드 호출 시점에만 어드바이스가 적용될 수 있음

포인트컷 표현식(AspectJ pointcut expression)

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Slf4j
@Aspect // 해당 어노테이션이 제공
@Component
public class TransactionLogger {

    @Pointcut("execution(* 주소.domain.product.StockService.*(..)) && @annotation(org.springframework.transaction.annotation.Transactional)")
    public void transactionalMethods() {}

    @Before("transactionalMethods()")
    public void beforeTransaction() {
        log.info("💚========> Transaction started");
    }

    @After("transactionalMethods()")
    public void afterTransaction() {
        log.info("❤️========> Transaction completed");
    }
}

Console log

귀.엽.다!

참고자료

https://velog.io/@gwichanlee/AOP-Pointcut