Spring

PointCut 표현식 정리

쿠카이든 2023. 3. 3. 14:04
728x90
PointCut 표현식

 

포인트컷에는 다양한 명시자를 이용할 수 있습니다.

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

 

execution 명시자

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

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

 

Ex

execution(public Integer com.edu.aop.*.*(*))

 - com.edu.aop 패키지에 속해있고, 파라미터가 1개인 모든 메서드

 

execution(* com.edu..*.get*(..))

 - com.edu 패키지 및 하위 패키지에 속해있고, 이름이 get으로 시작하는 파라미터가 0개 이상인 모든 메서드 

 

execution(* com.edu.aop..*Service.*(..))

 - com.edu.aop 패키지 및 하위 패키지에 속해있고, 이름이 Service르 끝나는 인터페이스의 파라미터가 0개 이상인 모든 메서드

 

execution(* com.edu.aop.BoardService.*(..))

 - com.edu.aop.BoardService 인터페이스에 속한 파마리터가 0개 이상인 모든 메서드

 

execution(* some*(*, *))

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

 

within 명시자
Ex

within(com.edu.aop.SomeService)

 - com.edu.aop.SomeService 인터페이스의 모든 메서드

 

within(com.edu.aop.*)

 - com.edu.aop 패키지의 모든 메서드

 

within(com.edu.aop..*)

 - com.edu.aop 패키지 및 하위 패키지의 모든 메서드

 

bean 명시자
Ex

bean(someBean)

 - 이름이 someBean인 빈의 모든 메서드

 

bean(some*)

 - 빈의 이름이 some으로 시작하는 빈의 모든 메서드

 

출처 : https://icarus8050.tistory.com/8

 

Spring AOP PointCut 표현식 정리

지난 번에 이어서 Advice가 어떤 JoinPoint에 사용될 것인지를 지정하는 PointCut 표현식을 정리하겠습니다. 포인트컷에는 다양한 명시자를 이용할 수 있습니다. execution Advice를 적용할 메서드를 명시

icarus8050.tistory.com

 

728x90