5. 스프링 AOP 소개
5.4 스프링 AOP 아키텍처
5.4.4 스프링에서 어드바이스 만들기
표 5-1. 스프링에서 제공하는 어드바이스
- [어드바이스 이름] Before
- [인터페이스] org.springframework.aop.MethodBeforeAdvice
- [설명]
비포 어드바이스를 사용하면 조인포인트 실행 전에 커스텀 처리를 수행할 수 있습니다. 스프링의 조인포인트는 항상 메서드 호출이므로 이 어드바이스는 메서드 실행 전에 전처리를 수행할 수 있게 해줍니다. 비포 어드바이스는 메서드에 전달된 인수뿐만 아니라 메서드 호출 대상에 대한 완전한 접근 권한을 가지지만 메서드 실행 자체를 제어할 수 없습니다. 비포 어드바이스가 예외를 던지면 (대상 메서드와 마찬가지로) 인터셉트 체인의 이후 실행이 중단되고 예외가 인터셉터 체인을 통해 전달됩니다.
- [어드바이스 이름] After-Returning
- [인터페이스] org.springframework.aop.AfterReturningAdvice
- [설명]
애프터 리터닝 어드바이스는 조인포인트에서의 메서드 호출이 실행을 마치고 값을 반환한 후에 실행됩니다. 애프터 리터닝 어드바이스는 메서드 호출 대상, 메서드에 전달된 인수, 메서드의 반환값에 접근할 수 있습니다. 애프터 리터닝 어드바이스가 호출될 때는 메서드가 이미 실행된 상태이므로 메서드 호출을 제어할 수는 없습니다. 대상 메서드가 예외를 던질 경우 애프터 리터닝 어드바이스가 실행되지 않으며 예외를 평상시처럼 호출 스택에 전달됩니다.
- [어드바이스 이름] After(finally)
- [인터페이스] org.springframework.aop.AfterAdvice
- [설명]
애프터 리터닝 어드바이스는 어드바이스된 메서드가 정상적으로 완료된 후에만 실행됩니다. 하지만 after(finally) 어드바이스는 어드바이스를 적용한 메서드의 결과와 상관없이 실행됩니다. 어드바이스를 적용한 메서드가 실패해 예외가 발생하더라도 이 어드바이스는 실행됩니다.
- [어드바이스 이름] Around
- [인터페이스] org.springframework.aop.MethodInterceptor
- [설명]
스프링에서 어라운드 어드바이스는 AOP 얼라이언스 표준의 메서드 인터셉터를 사용해 모델링됐습니다. 이 어드바이스는 메서드 호출 전후에 실행되며 메서드 호출이 진행되는 시점을 제어할수 있습니다. 또 필요하다면 직접 로직 구현체를 제공해 메서드 전체를 건너뛸 수 있습니다.
- [어드바이스 이름] Throws
- [인터페이스] org.springframework.aop.ThrowsAdvice
- [설명]
스로우 어드바이스는 메서드 호출이 끝난 후 호출이 예외를 던질 때에만 실행됩니다. 스로우 어드바이스는 특정 예외만 잡아내는 것이 가능합니다. 그렇게 할 경우 예외를 던진 메서드, 메서드 호출로 전달된 인수, 호출 대상에 접근할 수 있습니다.
- [어드바이스 이름] Introduction
- [인터페이스] org.springframework.aop.IntroductionInterceptor
- [설명]
스프링은 인트로덕션을 특수한 인터셉터 타입으로 모델링합니다. 인트로덕션 인터셉터를 사용하면 어드바이스가 인트로듀스하는 메서드의 구현체를 지정할 수 있습니다.
[전문가를 위한 스프링5] 9.3 트랜잭션 프로퍼티 살펴보기 (0) | 2023.11.15 |
---|---|
[전문가를 위한 스프링5] HibernateException casting error (0) | 2023.10.17 |
[전문가를 위한 스프링5] 6장 MYSQL FUNCTION 생성 에러 (0) | 2023.10.05 |
[전문가를 위한 스프링5] 자바 구성 애너테이션 목록 (0) | 2023.09.04 |
[JAVA] 백준 12869번 뮤탈리스크 (0) | 2022.03.27 |