Join Point
Application의 '진행 흐름에서의 특정 포인트'를 의미하며
메서드의 실행, 객체의 인스턴스화, 클래스 초기화, 필드 접근, 예외 처리 같은 것들이 포인트가 된다.
AOP를 수행하는 메서드는 Join point의 인스턴스를 인자로 받아야 한다.
= Join Point 해당 포인트의 정보를 얻어야 하기 때문이다.
AspectJ를 사용하여 컴파일 타임과 클래스 로딩 시점에 적용하는 AOP는
바이트 코드를 실제 조작하기 때문에 해당 기능을 모든 지점에서 다 적용 가능하다.
다만 스프링의 AOP에서는 프록시 방식을 사용하기 때문에
1. Join point를 메서드 실행 지점 (a method execution)으로 한정한다
2. 스프링 컨테이너가 관리할 수 있는 스프링 Bean에만 AOP를 적용할 수 있다.
Cross-Cutting Concern(횡단 관심)은 AOP에 의해 Join point 전/후에 자동으로 추가된다.
어드바이스 적용이 필요한 부분은 Application안에 메서드를 갖는다.
Interface 기능
methods | Description |
JoinPoint.getArgs() | JoinPoint에 전달된 인자를 배열로 전환해 반환 |
JoinPoint.getThis() | AOP proxy 객체 반환 |
JoinPoint.getTarget() | AOP가 적용된 대상 객체 반환 e.g.) 클라이언트가 호출한 비즈니스 메서드를 포함하는 비즈니스 객체 반환 |
JoinPoint.getSignature() | 메서드의 signature객체 반환 |
[Signiture method] String getName() |
클라이언트가 호출한 메서드의 이름 반환 |
[Signiture method] String toLongString() |
클라이언트가 호출한 메서드의 Signature를 패키지 경로까지 포함하여 반환 |
[Signiture method] String toShortString() |
클라이언트가 호출한 메서드 Signature를 축약한 문자열로 반환 |
JoinPoint.toString() | Advice 되어진 메서드의 설명 출력 |
*signature = {메서드 이름 + 메서드 파라미터 }
ProceedingJoinPoint
proceed() : 다음 advice나 target 호출
'programming > SPRING' 카테고리의 다른 글
[TBC]AOP(Aspect Oriented Programming) (0) | 2022.06.21 |
---|---|
AOP - Annotation (AspectJ) (0) | 2022.06.20 |
AOP - Pointcut 표현식 / 지시자 (0) | 2022.06.20 |
AOP - Advice (0) | 2022.06.20 |
[TBC]IoC 와 DI (0) | 2022.06.18 |