[Spring] AOP PointCut 표현식

배세훈·2021년 11월 30일
0

Spring

목록 보기
25/38

명시자

execution Advice를 적용할 메서드를 명시할 때 사용합니다.
within 특정 타입에 속하는 메서드를 JoinPoint로 설정되도록 명시할 때 사용합니다.
bean 스프링 버전 2.5버전부터 지원하기 시작했으며 스프링 빈을 이용하여 JoinPoint를 설정합니다.

execution

execution([수식어][리턴타입] [클래스이름][이름]([파라미터])

  • 수식어: public, private 등 수식어를 명시합니다. (생략 가능)
  • 리턴타입: 리턴 타입을 명시합니다.
  • 클래스이름 및 이름: 클래스이름과 메서드 이름을 명시합니다. (클래스 이름은 풀 패키지명으로 명시해야합니다. 생량가능)
  • 파라미터: 메서드의 파라미터를 명시합니다.
  • "*": 모든 값을 표현합니다.
  • "..": 0개 이상을 의미합니다.

ex)
execution(public Integer com.example.aop..(*))
-> com.example.aop 패키지의 하위 클래스 중 public 접근자면서 반환타입이 Integer, 한개의 파라미터를 가지는 메소드

execution( com.example...get*(..))
-> com.exapmle 패키지 및 하위 패키지의 클래스 중 이름이 get으로 시작하며 파라미터가 0개이상인 모든 메서드

execution( com.example.aop..Service.*(..))
-> com.example.aop 패키지 및 하위 패키지에 속해있고 이름이 Service로 끝나는 파라미터가 0개이상인 모든 메서드

execution( com.example.aop.BoardService.(..))
-> com.example.aop 패키지의 BoardService 클래스의 파라미터가 0개 이상인 모든 메서드

execution( some(, ))
-> 메서드 이름이 some으로 시작하고 파라미터가 2개인 모든 메서드

within 명시자

ex)
within(com.example.aop.SomeService)
-> com.example.aop.SomeService 인터페이스의 모든 메서드

within(com.example.aop.*)
-> com.example.aop 패키지의 모든 메서드

within(com.example.aop..*)
-> com.example.aop 패키지 및 하위 패키지의 모든 메서드

bean 명시자

ex)
bean(someBean)
-> 이름이 someBean인 빈의 모든 메서드

bean(some*)
-> 빈의 이름이 some으로 시작하는 빈의 모든 메서드

profile
성장형 인간

0개의 댓글