[AOP] JoinPoint
by mignon25AOP 적용 기법
AOP의 적용 기법은 AspectJ, 프록시 방식으로 나누어진다.
- AspectJ
- 바이트코드를 직접 조작해서 AOP를 적용
- 오브젝트의 생성, 필드 값의 조회와 조작, 프록시 적용이 불가능한 private 메서드 호출, 스태틱 메서드 호출 및 초기화 등 모든 지점에 모두 부가기능을 부여할 수 있다.
- 프록시 방식(스프링 AOP)
- 조인 포인트로 메서드 실행지점만 사용 가능
- 프록시는 메서드 오버라이딩 개념으로 동작
- 스프링 컨테이너가 관리할 수 있는 스프링 빈에만 AOP 적용 가능
JoinPoint
애플리케이션 실행 흐름에서 특정포인트 (AOP를 적용할 수 있는 지점)
- AOP 를 수행하는 메서드는 이 JoinPoint 인스턴스를 인자로 받게 된다.
- JoinPoint 인스턴스에서 조인 포인트 지점의 정보를 얻을 수 있다.
- JoinPoint.getMethod()
- JoinPoint.getArgs() : JoinPoint 에 전달된 인자를 배열로 반환
- JoinPoint.getThis() : AOP 프록시 객체 반환
- JoinPoint.getTarget()
- AOP가 적용된 대상 객체 반환
- 클라이언트가 호출한 비즈니스 메서드를 포함하는 비즈니스 객체 반환
- JoinPoint.getSignature()
- 클라이언트가 호출한 메소드의 시그니처 (리턴타입, 이름, 매개변수) 정보가 저장된 Signature 객체를 리턴
- Signture 메서드
- String getName() : 클라이언트가 호출한 메서드의 이름 반환
- String toLongString() : 클라이언트가 호출한 메서드의 리턴타입, 이름, 매개변수를 패키지 경로까지 포함하여 반환
- String toShortString() : 클라이언트가 호출한 메서드 시그니처를 축약한 문자열로 반환
ProceedingJoinPoint
- proceed() : 다음 어드바이스나 타겟 호출
'Spring' 카테고리의 다른 글
| [빈 스코프] 빈 스코프와 프로토타입 스코프 (0) | 2023.04.13 |
|---|---|
| [AOP] Advice (0) | 2023.04.12 |
| [AOP] Pointcut (0) | 2023.04.12 |
| 조회한 빈이 모두 필요할 때 - List, Map 사용 (0) | 2023.04.12 |
| @Autowired 사용할 때 빈 이름 중복 매칭 문제 - @Qualifier, @Primary (0) | 2023.04.11 |
블로그의 정보
Mignon'S Dev Log
mignon25