Pointcut Expression
이 문서에서는 Pointcut을 설정하기 위한 표현식에 대해 살펴본다.
Pointcut이란
Pointcut 정의 표현식 종류
within : 특정 패키지 or 클래스의 모든 메소드를 지정
target : 특정 인터페이스와 그의 자식 클래스의 메소드를 지정
args : 특정 매개변수 형태를 갖는 모든 메소드를 지정
this : 특정 인터페이스를 구현하는 프록시 객체를 지정
execution : 표현식으로 형태를 지정하여 간섭
규칙
.*
은 해당 패키지 전체를 의미..*
은 해당 패키지와 그 하위 패키지 전체를 의미
execution 표현식
execution
은 다음과 같이 작성한다.
execution(public int aaa.bbb.Test.hello())
public 접근제한을 가지고 int 반환형을 갖는 aaa.bbb패키지의 Test클래스의 매개변수가 없는 hello()를 지정
execution(public int aaa.bbb.Test.hello(*))
public 접근제한을 가지고 int 반환형을 갖는 aaa.bbb패키지의 Test클래스의 매개변수가 1개 이상인 hello()를 지정
execution(public int aaa.bbb.Test.hello(..))
public 접근제한을 가지고 int 반환형을 갖는 aaa.bbb패키지의 Test클래스의 매개변수가 0개 이상인 hello()를 지정
execution(public int aaa.bbb.Test.hello(int))
public 접근제한을 가지고 int 반환형을 갖는 aaa.bbb패키지의 Test클래스의 매개변수가 int 1개인 hello()를 지정
execution(public int aaa.bbb.Test.h*(..))
public 접근제한을 가지고 int 반환형을 갖는 aaa.bbb패키지의 Test클래스의 매개변수가 0개 이상인 h로 시작하는 메소드 지정
execution(public int aaa.bbb.Test.*(..))
public 접근제한을 가지고 int 반환형을 갖는 aaa.bbb패키지의 Test클래스의 모든 메소드 지정
execution(public int aaa.bbb.*.*(..))
public 접근제한을 가지고 int 반환형을 갖는 aaa.bbb 패키지의 모든 클래스의 모든 메소드 지정
execution(public int aaa.*.*(..))
public 접근제한을 가지고 int 반환형을 갖는 aaa 패키지의 모든 클래스의 모든 메소드 지정
execution(public int aaa..*.*(..))
public 접근제한을 가지고 int 반환형을 갖는 aaa 패키지와 그 하위 패키지의 모든 클래스의 모든 메소드 지정
execution(public int *.*.*(..))
public 접근제한을 가지고 int 반환형을 갖는 모든 메소드 지정
execution(public * *.*.*(..))
반환형까지 무관
execution(* *.*.*(..))
접근제한은 안써도 public
Last updated