Spring | 스프링 퀵 스타트 - AOP 관점 지향 프로그래밍(Aspect Oriented Programming) 2/n

파과·2022년 8월 15일

어드바이스 동작 시점

어드바이스는 각 조인포인트에 삽입되어 동작할 횡단 관심에 해당하는 공통 기능이며, 동작 시점은 각 AOP 설정마다 다르다. 스프링에서는 다섯 가지의 동작 시점을 제공한다.

After Returning
포인트컷 메소드가 정상적으로 실행되고 나서, 메소드 수행 결과로 생성된 데이터를 리턴하는 시점에 동작한다. 따라서 비즈니스 메소드 수행 결과로 얻은 결과 데이터를 이용하여 사후 처리 로직을 추가할 때 사용한다.

After Throwing
포인트컷 메소드가 실행되다가 예외가 발생하는 시점에 동작한다. 따라서 예외 처리 어드바이스를 설정할 때 사용한다.

After
예외 발생 여부에 상관없이 무조건 수행된다.

Around
비즈니스 메소드 실행 전과 후에 모두 동작한다.
주의 : 다른 어드바이스에서는 JoinPoint를 사용하지만, Around에서만은 ProceedingJoinPoint를 매개변수로 사용해야 한다. Around어드바이스에서만 proceed() 메소드가 필요하기 때문이다.

JoinPoint와 바인드 변수

JoinPoint에서 제공하는 메소드

Signature getSignature() : 클라이언트가 호출한 메소드의 시그니처(리턴타입, 이름, 매개변수) 정보가 저장된 Signature 객체 리턴

Object getTarget() : 클라이언트가 호출한 비즈니스 메소드를 포함하는 비즈니스 객체 리턴

Object[] getArgs() : 클라이언트가 메소드를 호출할 때 넘겨준 인자 목록을 Object 배열로 리턴

Signature 객체가 제공하는 메소드

String getName() : 클라이언트가 호출한 메소드 이름 리턴

String toLongString() : 클라이언트가 호출한 메소드의 리턴타입, 이름, 매개변수를 패키지 경로까지 포함하여 리턴

String toShortString() : 클라이언트가 호출한 메소드 시그니처를 축약한 문자열로 리턴

0개의 댓글