Ch07. AOP 프로그래밍 용어, Around Advice
AOP는 핵심 기능에 공통 기능을 삽입하는 것이고, 방법에는 여러가지가 있는데 스프링은 런타임에 프록시 객체를 생성해 공통 기능을 삽입하는 방법만을 지원한다.
(다른 방법으로는 컴파일 시점에 코드에 공통 기능 삽입, 클래스 로딩 시점에 바이트 코드에 삽입이 있는데 이건 AspectJ 같은 AOP 전용 도구를 사용해야 한다고 한다)
AOP 용어
Aspect
여러 객체에 공통으로 적용되는 기능.
Advice
Aspect을 언제 적용할 지를 정의한다.
예를들어 공통 기능 (Aspect)이 시간계산 이라면, 매소드 호출 전 시간계산을 적용한다.
JoinPoint
Advice를 적용 가능한 지점들의 집합.
메소드 호출, 필드 값 변경 등이 해당하는데, Spring은 프록시를 이용해 AOP를 구현하기 때문에 Spring에서 JoinPoint란 메소드 호출만을 의미한다.
PointCut
JoinPoint의 부분집합.
즉 JoinPoint 중 실제로 Advice를 적용할 지점들의 집합.
Weaving
Advice를 적용하는 행위.
Advice의 종류
Aspect을 언제 적용할지를 정의하는 Advice에는 종류가 있다.
Before Advice, After Returnning Advice 등이 있는데 이름대로를 의미한다.
예를들어 Before Advice는 메소드를 실행하기 전에 Adivce를 적용하는 것을 의미한다.
구분 기준이 메소드인 이유는 스프링은 프록시를 이용해 메소드 호출 시점에 Aspect를 적용하기 때문이다.
스프링에서 가장 널리 사용되는 것은 Around Advice이다.
Around Advice는 대상 객체의 메소드 실행 전, 후 또는 익셉션 발생 시점에 Advice를 적용한다.
출처 : 스프링5 프로그래밍 입문 (최범균 저)