반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- findFirst
- RestTemplate
- AOP 매개변수
- AOP target
- Save Action
- AOP this
- JsonStringType
- 포맷터
- vaultTemplate
- spring
- 쓰레드 안전
- ClientHttpRequestInterceptor
- 개방/폐쇄 원칙
- jpa
- java
- JsonType
- fotmatter
- Spring Boot
- auto configuration
- restTemple
- gradle
- Starter
- @AutoConfiguration
- AccessLevel
- findAny
- Thread Safety
- OCI AI accociate
- Stream
- LogInterceptor
- AOP
Archives
- Today
- Total
맨땅에 헤딩하는 개바른자
[AOP] @target @within 본문
반응형
많이 쓰이지 않은 기능이지만 알고있으면 좋은 내용이다.
AOP로 포인트컷을 활용할 때 상황에 따라 사용할 수 있다.
- target은 인스턴스의 모든 메서드를 조인 포인트로 동작한다.
- target은 부모의 메소드까지 적용
- within은 해당 타입 내에 있는 메서드만 조인 포인트로 동작한다.
- 자식본인의 메서도만 허용

interface Parent {
parentMethod();
}
@ClassAop
class Child implements Parent {
childMethod();
}
// @target : 인스턴스 기준으로 모든 메서드의 조인 포인트를 선정, 부모 타입의 메서드도 적용
// Parent.parentMethod() 감지 O
// Child.childMethod() 감지 O
@Around("excution(* hello.aop..*(..)) && @target(hello.aop.member.annotation.ClassAop)")
public Object atTarget(ProceedingJoinPoint joinPoint) throws Throwable {
log.info("[@target] {}", joinPoint.getSignature());
}
// @within : 선택된 클래스 내부에 있는 메서드만 조인 포인트로 선정, 부모 타입의 메서드는 적용되지 않음
// Parent.parentMethod() 감지 X
// Child.childMethod() 감지 O
@Around("excution(* hello.aop..*(..)) && @within(hello.aop.member.annotation.ClassAop)")
public Object atTarget(ProceedingJoinPoint joinPoint) throws Throwable {
log.info("[@target] {}", joinPoint.getSignature());
}
주의
- 다음 포인트컷 지시자는 단독으로 사용할 수 없습니다.
- args, @args, @target
- 실행 시점에 일어나는 포인트컷 적용여부도 결국 프록시가 있어야 실행 시점에 판단할 수 있어서 프록시가 없다면 판단 자체가 불가능하다.
- 더쉽게 풀어보자면 args, @args, @target 경우는 실행시점에 잡히는것이 아닌 Runtime시에 동작하는 애들이다. 즉 프록시배경에서 놀아야하고, 실행시점이아닌 Runtime시점에서 노는애들이다.
- 프록시는 excution으로 잡는다. 이후 args, @args, @target 같은애들이 논다
- 그러기위해서는 args, @args, @target 단독으로사용하면 프록시가 생성되지 않아서 기동시 오류가 발생된다.
반응형
'JAVA > AOP' 카테고리의 다른 글
| [AOP] 실전예제 Service단 파라미터 Null체크 사용기 (1) | 2023.04.25 |
|---|---|
| [AOP] 실전예제 로그TRACE (0) | 2023.04.18 |
| [AOP] this, target (0) | 2023.03.29 |
| [AOP] 매개변수 전달 (0) | 2023.03.29 |
| [AOP] @annotation (0) | 2023.03.23 |