상세 컨텐츠

본문 제목

[전문가를 위한 스프링5]스프링에서 제공하는 어드바이스

용어 공부

by dajingjing 2023. 9. 6. 19:06

본문

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

- [설명] 

 스프링은 인트로덕션을 특수한 인터셉터 타입으로 모델링합니다. 인트로덕션 인터셉터를 사용하면 어드바이스가 인트로듀스하는 메서드의 구현체를 지정할 수 있습니다.

관련글 더보기