최범균님의 스프링과 인터넷검색을 기반으로 제가 볼 용도의 글을 쓰는것입니다.
ApsectJ 문법으로 Pointcut 을 만들때 문법...
execution([public|protected|private] [return Type] [className][메소드이름](parameter)
수식어패턴? 리턴타입패턴 클래스이름패턴?이름패턴(파라미터패턴)
- 수식어패턴 : public protected ... (생략가능)
- 리턴타입패턴 : 리턴타입명시
- 클래스이름패턴 / 이름패턴 : 클래스이름 및 메서드 이름을 패턴으로 명시한다.
- 파라미터패턴 : 매칭될 파라미터에 대해서 명시한다.
각 패턴은 "*" 로 표현가능하다
'..' 을 이용하여 0개 이상의 의미를 나타낼 ㅅ수 있다.
execution(public void set*(..))
: 리턴타입이 void , 메서드이름이 set으로 시작하고 파라미터가 0개 이상인 메소드 호출함
execution(* madvirus.spring.chap05.*.*())
: madvirus.spring.chap05 패키지의 파라미터가 없는 모든 메소드 호출
execution(* madvirus.spring.chap05..*.*())
: madvirus.spring.chap05 패키지 및 하위패키지에 있는, 파라미터가 0개 이상인 메소드 호출
execution(Integer madvirus.spring.chap05..WriteArticleService.write(..))
: 리턴타입이 Integer인, WriteArticleService 인터페이스의 write() 메소드 호출
execution(* get*(*))
: 이름이 get으로 시작하고 1개의 파라미터를 갖는 메소드 호출
execution(* read*(Integer,..))
: 이름이 read로 시작하고, 첫번째 파라미터 타입이 Integer이며, 1개 이상의 파라미터를 갖는 클래스
within 명시자는 메소드가 아닌 특정 타입에 속하는 메소드를 Pointcut으로 설정할때 사용된다.
within(madvirus.spring.chap05.board.service.WriteArticleService)
:WriteArticleService 인터페이스의 모든 메소드 호출
within(madvirus.spring.chap05.board.service.*)
: madvirus.spring.chap05.board.service 패키지에 있는 모든 메소드 호출
bean 명시자는 스프링빈 이름을 이용하여 Pointcut을 정의한다.
bean(writeArticleService)
: 이름이 writeArticleService 인 빈의 메소드 호출
bean(*ArticleService)
: 이름이 ArticleService로 끝나는 빈의 메소드 호출
ApsectJ 문법으로 Pointcut 을 만들때 문법...
execution([public|protected|private] [return Type] [className][메소드이름](parameter)
수식어패턴? 리턴타입패턴 클래스이름패턴?이름패턴(파라미터패턴)
- 수식어패턴 : public protected ... (생략가능)
- 리턴타입패턴 : 리턴타입명시
- 클래스이름패턴 / 이름패턴 : 클래스이름 및 메서드 이름을 패턴으로 명시한다.
- 파라미터패턴 : 매칭될 파라미터에 대해서 명시한다.
각 패턴은 "*" 로 표현가능하다
'..' 을 이용하여 0개 이상의 의미를 나타낼 ㅅ수 있다.
execution(public void set*(..))
: 리턴타입이 void , 메서드이름이 set으로 시작하고 파라미터가 0개 이상인 메소드 호출함
execution(* madvirus.spring.chap05.*.*())
: madvirus.spring.chap05 패키지의 파라미터가 없는 모든 메소드 호출
execution(* madvirus.spring.chap05..*.*())
: madvirus.spring.chap05 패키지 및 하위패키지에 있는, 파라미터가 0개 이상인 메소드 호출
execution(Integer madvirus.spring.chap05..WriteArticleService.write(..))
: 리턴타입이 Integer인, WriteArticleService 인터페이스의 write() 메소드 호출
execution(* get*(*))
: 이름이 get으로 시작하고 1개의 파라미터를 갖는 메소드 호출
execution(* read*(Integer,..))
: 이름이 read로 시작하고, 첫번째 파라미터 타입이 Integer이며, 1개 이상의 파라미터를 갖는 클래스
within 명시자는 메소드가 아닌 특정 타입에 속하는 메소드를 Pointcut으로 설정할때 사용된다.
within(madvirus.spring.chap05.board.service.WriteArticleService)
:WriteArticleService 인터페이스의 모든 메소드 호출
within(madvirus.spring.chap05.board.service.*)
: madvirus.spring.chap05.board.service 패키지에 있는 모든 메소드 호출
bean 명시자는 스프링빈 이름을 이용하여 Pointcut을 정의한다.
bean(writeArticleService)
: 이름이 writeArticleService 인 빈의 메소드 호출
bean(*ArticleService)
: 이름이 ArticleService로 끝나는 빈의 메소드 호출
'IT > 스프링' 카테고리의 다른 글
AspectJ in Spring? (0) | 2012.01.09 |
---|---|
weaving?? (0) | 2012.01.09 |
JointPoint ..? (0) | 2012.01.06 |
Advice..? (0) | 2012.01.06 |
@Aspect 어노테이션을 이용한 AOP 설정 (0) | 2012.01.05 |