본문 바로가기

Spring/spring AOP25

스프링 코어 2 - 포인트컷 포인트컷 지시자 - 지금부터 포인트컷 표현식을 포함한 포인트컷에 대해서 자세히 알아보자. aspectJ는 포인트컷을 편리하게 표현하기 위한 특별한 표현식을 제공한다. ex) @Pointcut("execution(* hello.aop.order..*(..))") 포인트컷 표현식은 execution 같은 포인트컷 지시자(Pointcut Designator)로 시작한다. 줄여서 PCD라 한다. 포인트 컷 지시자의 종류: • execution : 메소드 실행 조인 포인트를 매칭한다. 스프링 AOP에서 가장 많이 사용하고, 기능도 복잡하다. • within : 특정 타입 내의 조인 포인트를 매칭한다 • args : 인자가 주어진 타입의 인스턴스인 조인 포인트 • this : 스프링 빈 객체(스프링 AOP 프록시).. 2022. 1. 14.
스프링 코어 2 - 어드바이스 종류 어드바이스 종류 - 어드바이스에는 앞서 배운 @Around외에도 여러가지 종류를 추가할 수 있다. 어드바이스 종류: @Around : 메서드 호출 전후에 수행, 가장 강력한 어드바이스, 조인 포인트 실행 여부 선택, 반환 값 변환, 예외 변환 등이 가능 @Before : 조인 포인트 실행 이전에 실행 @AfterReturning : 조인 포인트가 정상 완료후 실행 @AfterThrowing : 메서드가 예외를 던지는 경우 실행 @After : 조인 포인트가 정상 또는 예외에 관계없이 실행(finally) (사실 @Before부터 아래 종류들은 @Around의 주변 기능들일 뿐이다. 위의 나머지 어드바이스들은 아래와 같은 타이밍에 적용된다. @Slf4j @Aspect public class AspectV6.. 2022. 1. 14.
스프링 코어 2 - AOP구현(포인트컷 분리, 어드바이스 추가 등...) 스프링 AOP 구현 스프링 AOP 학습을 위해 아래와 같은 의존성들을 추가하고 프로젝트를 만들었다. dependencies { implementation 'org.springframework.boot:spring-boot-starter' implementation 'org.springframework.boot:spring-boot-starter-aop'//직접추가 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' //테스트에서 lombok 사용 testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lom.. 2022. 1. 14.
스프링 코어 2 - AOP 개념 스프링 AOP 개념 핵심 기능과 부가 기능 핵심 기능은 해당 객체가 제공하는 고유의 기능이다. 예를 들어서 OrderService 의 핵심 기능은 주문 로직이다. 부가 기능은 핵심 기능을 보조하기 위해 제공되는 기능이다. 예를 들어서 로그 추적 로직, 트랜잭션 기능이 있다. 이러한 부가 기능은 단독으로 사용되지 않고, 핵심 기능과 함께 사용된다. 예를 들어서 로그 추적 기능은 어떤 핵심 기능이 호출되었는지 로그를 남기기 위해 사용한다. 그러니까 부가 기능은 이름 그대로 핵심 기능을 보조하기 위해 존재한다. 주문 로직을 실행하기 직전에 로그 추적 기능을 사용해야 하면, 핵심 기능인 주문 로직과 부가 기능인 로그 추적 로직이 하나의 객체 안에 섞여 들어가게 된다. 부가 기능이 필요한 경우 이렇게 둘을 합해서.. 2022. 1. 12.