execution 명시자는 Advice를 적용할 메서드를 명시할 때 사용되며, 기본 형식은 다음과 같다.

execution(수식어패턴? 리턴타입패턴 패키지패턴?이름패턴(파라미터패턴))

수식어패턴 : 생략이 가능한 부분으로 public, protected 등이 옴
리턴타입패턴 : 리턴 타입을 명시
클래스이름패턴, 이름패턴 : 클래스 이름 및 메서드 이름을 패턴으로 명시
파라미터패턴 : 매칭될 파라미터에 대해 명시

각 패턴은 '*'을 이용하여 모든 값을 표현할 수 있으며, 또한, '..'을 이용하여 0개 이상이라는 의미를 표현


execution(public void set*(..))
==> 리턴 타입이 void이고 메서드 이름이 set으로 시작하고, 파라미터가 0개 이상인 메서드 호출

execution(* kame.spring.chap03.core.*.*())
==> kame.spring.chap03.core 패키지의 파라미터가 없는 모든 메서드 호출


execution(* kame.spring.chap03.core..*.*(..))
==> kame.spring.chap03.core 패키지 및 하위 패키지에 있는 파라미터가 0개 이상인 메서드 호출

execution(Integer kame.spring.chap03.core.WriteAtricleService.write(..))
==> 리턴 타입이 Integer인 WriteArticeService 인터페이스의 write() 메서드 호출

execution(* get*(*))
==> 이름이 get으로 시작하고 1개의 파라미터를 갖는 메서드 호출

execution(* get*(*.*))
==> 이름이 get으로 시작하고 2개의 파라미터를 갖는 메서드 호출

execution(* real*(Integer, ..))
==> 메서드 이름이 read로 시작하고, 첫 번째 파라미터 타입이 Integer이며, 1개 이상의 파라미터를 갖는 메서드 호출



[참조] 스프링 2.5 프로그래밍(최볌균 지음)

+ Recent posts