Pointcut Expression

이 문서에서는 Pointcut을 설정하기 위한 표현식에 대해 살펴본다.

Pointcut이란

Pointcut 정의 표현식 종류

  • within : 특정 패키지 or 클래스의 모든 메소드를 지정

  • target : 특정 인터페이스와 그의 자식 클래스의 메소드를 지정

  • args : 특정 매개변수 형태를 갖는 모든 메소드를 지정

  • this : 특정 인터페이스를 구현하는 프록시 객체를 지정

  • execution : 표현식으로 형태를 지정하여 간섭

규칙

  • .* 은 해당 패키지 전체를 의미

  • ..* 은 해당 패키지와 그 하위 패키지 전체를 의미

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