Whiteship's Note

8. @AspectJ의 Pointcut 살펴보기 1

AOP : 2007.01.16 12:47


참조 : Spring Reference 6.2.3.4

execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?)
  • 빨간색으로 표시된 return type pattern을 제외 하고는 전부 optional입니다.
  • modifiers-pattern은 advice가 적용될 메소드의 접근 지시자 형태를 정합니다. * 은 모든 메소드 public은 public 메소드만... 뭐 그런 식입니다.
  • declaring-type-pattern은 인터페이스나 패키지 패턴을 나타내는 부분인듯 합니다.
  • name-pattern은 메소드의 이름의 형태를 지정해 줍니다. set* 과 같이 하면 set으로 시작하는 모든 메소드를 나타냅니다.
  • param-pattern은 조금 특이합니다. ()은 파라미터가 없는 메소드를 가리키고, (..)는 파라미터가 어떤 형태든 몇 개든 상관없슴을 나타냅니다. 다른 패턴들이 * 와일드 카드를 사용하는 것과는 차이가 있네요. (*, String) 이것은 파라미터가 두 개고 첫번 째 파라미터의 타입은 상관이 없고 두 번째 파라미터의 타입이 String인 메소드를 나타냅니다.
within(type-pattern)
  • within은 Spring AOP가 메소드 execution 포인트컷만 지원하기 때문에 해당 타입과 관련된 모든 메소드 실행시점을 가리키게 됩니다. AspectJ를 사용할 때는 훨씬 다양한 포인트컷[각주:1]을 나타내게 됩니다.
  • within(com.xyz.service.*) 이것 같은 경우는 com.xyz.service 패키지 안에 있는 모든 클래스의 모든 메소드의 실행 시점을 나타냅니다.
  1. 클래스 초기화 시점, 객체 초기화 시점, 생성자 실행 시점, 메소드 실행 시점 이밖에도 변수들에 대한 포인트컷까지 적용되며 내부 클래스가 있을 경우 그 것의 생성자나 기타 내부 클래스와 관련된 모든 join point에도 적용 됩니다. [본문으로]
top




: 1 : ··· : 28 : 29 : 30 : 31 : 32 : 33 : 34 : 35 : 36 : ··· : 40 :