728x90
반응형
Aspect를 적용할 위치를 지정할 때 사용한 Pointcut 설정을 보면, execution 명시자를 사용했습니다.
@Aspect
public class ExeTimeAspect {
@Pointcut("execution(public * chap07..*(..))")
private void publicTarget() {
}
execution 명시자는 Advice를 적용할 메서드를 지정할 때 사용합니다.
기본형식
execution(수식어패턴? 리턴타입패턴 클래스이름패턴?메서드이름패턴(파라미터패턴))
'수식어패턴'은 생략가능하며 public, protected 등이 옵니다. 스프링 AOP는 public 메서드에만 적용할 수 있기 때문에 사실상 public만 의미가 있습니다.
'리턴타입패턴'은 리턴 타입을 명시합니다. '클래스이름패턴'과 '메서드이름패턴'은 클래스 이름 및 메서드 이름을 패턴으로 명시합니다.
'파라미터패턴'은 매칭될 파라미터에 대해서 명시합니다.
각 패턴은 '*'를 이용하여 모든 값을 표현할 수 있습니다. 또한 '..'(점 두 개)를 이용하여 0개 이상이라는 의미를 표현할 수 있습니다.
execution(public void set*(..)) | 리턴 타입이 void, 메서드 이름이 set으로 시작하고, 파라미터가 0개이상인 메서드 호출 파라미터 부분에 '..'을 사용하여 파라미터가 0개이상인 것 표현 |
execution(* chap07 .*.*()) | chap07 패키지의 타입에 속한 파라미터가 없는 모든 메서드 호출 |
execution(* chap07 ..*.*(..)) | chap07 패키지 및 하위 패키지에 있는 파라미터가 0개 이상인 메서드 호출, 패키지 부분에 '..'을 사용하여 해당 패키지 또는 하위 패키지를 표현 |
execution(Long chap07. Calculator.factorial(..)) | 리턴타입이 Long인 Calculator 타입의 factorial() 호출 |
execution(* get*(*)) | 이름이 get으로 시작하고 파라미터가 한 개인 메서드 호출 |
execution(* get*(*, *)) | 이름이 get으로 시작하고 파라미터가 두 개인 메서드 호출 |
execution(* read*(Integer, ..)) | 메서드 이름이 read 로 시작하고, 첫 번째 파라미터 타입이 Integer이며, 한 개 이상의 파라미터를 갖는 메서드 호출 |
728x90
반응형
'Spring' 카테고리의 다른 글
[Spring] Spring AOP - @Around의 Pointcut 설정과 @Pointcut 재사용 (0) | 2024.02.16 |
---|---|
[Spring] Spring AOP - Advice 적용순서 (0) | 2024.02.14 |
[Spring] AOP - 프록시 생성방식 (0) | 2024.02.05 |
[Spring] Spring AOP 구현해보기 (@Aspect, @Pointcut, @Around) (1) | 2024.02.02 |
[Spring] Spring AOP (0) | 2024.01.31 |