Transaction Log 출력하기
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
귀.엽.다!