CODEDRAGON ㆍDevelopment/Spring
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이라는 이름의 모든 클래스에 적용됩니다. · 다른 패키지에 같은 이름의 클래스가 있으면 모두 적용이 되므로 유의해야 합니다. |
'Development > Spring' 카테고리의 다른 글
AspectJ Weaver 라이브러리 설치 (0) | 2020.06.03 |
---|---|
Maven Repositories View 표시하기 - eclipse/STS (0) | 2020.04.26 |
Spring 설정 메타정보 XML 파일 생성하기 - eclipse/STS (0) | 2020.04.04 |
MyBatis 라이브러리 검색 및 설치 - 3.5.1 (0) | 2020.03.27 |
Bean 의존관계 주입 Annotation (0) | 2020.03.21 |