달력

7

« 2020/7 »

  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  


 

 

PointCut 표현식 예시 - execution

"execution(* aspects.trace.demo.*.*(. . ))"

 

execution

execution 표현식

*

Any return type

aspects.trace.demo

package

.*

class

.*

method

(. . )

Any type and number of arguments

 

 

표현식

설명

execution(public void get*(..))

public void 모든 get메소드

파라미터는 모든 종류를 허용합니다.

execution(* com.codelab.ex.*.*())

com.codelab.ex 패키지에 파라미터가 없는 모든 메소드

execution(* com.codelab.ex..*.*())

com.codelab.ex 패키지 com.codelab.ex 하위 패키지에 파라미터가 없는 모든 메소드

execution(* com.codelab.ex.Worker.*())

com.codelab.ex.Worker클래스안에 있는 파라미터가 없는 모든 메소드

execution(* hello(..))

·         hello라는 이름을 가진 메서드를 선정합니다.

·         파라미터는 모든 종류를 허용합니다.

execution(* hello())

·         파라미터 패턴이 () 되어 있으므로 hello 메서드 중에서 파라미터가 없는 것만 선택합니다.

execution(* com.codelab.service.UserServiceImpl.*(..))

·         com.codelab.service.UserServiceImpl 클래스를 직접 지정하여 클래스가 가진 모든 메서드를 선택합니다.

execution(* com.codelab.service.UserServiceImpl.*.*(..))

·         com.codelab.service 패키지의 모든 클래스에 적용됩니다.

·         하지만 서브패키지의 클래스는 포함되지 않습니다.

execution(* com.codelab.service..*.*(..))

·         com.codelab.service 패키지의 모든 클래스에 적용됩니다.

·         '..' 사용해서 서브패키지의 모든 클래스까지 포함합니다.

execution(* *..Target.*(..))

·         패키지에 상관없이 Target이라는 이름의 모든 클래스에 적용됩니다.

·         다른 패키지에 같은 이름의 클래스가 있으면 모두 적용이 되므로 유의해야 합니다.

 

 



Posted by codedragon codedragon

댓글을 달아 주세요