..열심히 공부하세../MVC

[21] @AspectJ의 Pointcut 살펴보기

댄스댄스 2012. 7. 12. 14:18

 

--------------------------------------[@AspectJ의 Pointcut 살펴보기-①]

 

execution(modifiers-pattern? ret-type-pattern declaring-type-pattern?
                                          name-pattern(param-pattern) throws-pattern?)

       return type pattern을 제외하고는 전부 optional이다

       modifiers-pattern은 advice가 적용될 메소드의 접근 지시자 형태를 정한다
       * 는 모든 메소드 public

       declaring-type-pattern은 인터페이스나 패키지 패턴을 나타낸다

       name-pattern은 메소드의 이름의 형태를 지정해 준다
       set*와 같이 하면 set으로 시작하는 모든 메소드를 나타낸다

       param-pattern은 조금 특이하다.
       ()은 파라미터가 없는 메소드를 가리키고
       (..)는 파라미터가 어떤 형태, 몇개등 상관없음을 나타낸다.
       다른 패턴들이 * 와일드 카드를 사용하는 것과는 차이가 있다.
       (*, String) 파라미터가 두개이고, 첫번째 파라미터의 타입은 상관이 없고
       두번째 파라미터의 타입이 String메소드를 나타낸다.

within(type-pattern)
       within은 Spring AOP가 메소드 execution 포인트컷만 지원하기 때문에
       해당 타입과 관련된 모든 메소드 실행시점을 가르킨다.
       AspectJ를 사용할 때는 훨씬 다양한 포인트컷(
              클래스 초기화 시점, 객체 초기화 시점,
              생성 실행 시점, 메소드 실행 시점
              이밖에도 변수들에 대한 포인트컷까지 적용되며,
              내부 클래스가 있을 경우 그것의 생성자나 기타 내부클래스와
              관련된 모든 joinpoint에도 적용된다)
       을 나타내게 된다.

within(com.xyz.service.*)의 경우는
       com.xyz.service패키지 안에 있는 모든 클래스의 
       모든 메소드의 실행시점을 나타낸다

 


--------------------------------------[@AspectJ의 Pointcut 살펴보기-②]

 

this(Type)
       this키워드에 바인딩 되는 현재 실행 중인 객체의 타입이 Type인 경우에
       모든 메소드 execution Join point를 나타낸다

target(Type)
       메소드가 호출되거나 필드가 접근되는 객체의 타입이 Type인 경우에
       그 객체의 모든 메소드 execution Join point를 나타낸다

args(Type or ".." or *)
       메소드의 전달인자가 ()안에 정의한 갯수나 타입에 매칭되는
       모든 메소드 execution Join Point를 나타낸다

@target(Type)
       타켓 객체(메소드가 호출되거나 필드가 접근되는 객체)에 @Type 어노테이션이
       붙어있을 때 그 객체의 모든 메소드 execution Join point를 나타낸다.

@within(Type)
       선언된 타입에 @Type 어노테이션이 붙어있을때 그 객체의 모든
       execution Join point를 나타낸다

@annotation(Type)
       실행되는 메소드에 @Type 어노테이션이 붙어있을때 그 메소드의
       execution Join point를 나타낸다

@args(Type)
       실행시 전달인자로 넘겨지는 것에 @Type 어노테이션이 붙어있을때
       그 메소드의 execution Join point를 나타낸다.