Java/Spring

Spring AOP PointCut 표현식 정리

Icarus8050 2019. 7. 21. 13:47
반응형

 지난 번에 이어서 Advice가 어떤 JoinPoint에 사용될 것인지를 지정하는 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://groovysunday.tistory.com/201

 

스프링(Spring) AOP : AspectJ Pointcut 표현식 (1-1) execution

execution 명시자 - Advice를 적용할 메서드 지정 - 기본 형식 : -> "*" 는 모든 값을 의미 -> ".." 는 0개 이상 의미 execution([수식어] [리턴타입] [클래스이름] [이름]([파라미터]) 수식어 - 생략가능 - publi..

groovysunday.tistory.com

https://snoopy81.tistory.com/296

 

AspectJ의 Pointcut 표현식

● execution 명시자 : Advice를 적용할 메서드를 명시할 때 사용 기본 형식 execution(수식어패턴? 리턴타입패턴 클래스이름패턴?이름패턴(파라미터패턴) ▶ 수식어패턴 : public, private 등등의 수식어를 명시,..

snoopy81.tistory.com

https://sjh836.tistory.com/157

 

Spring AOP (개념, 용어, 원리, 포인트컷 표현식, JoinPoint API)

1. AOP란? Aspect Oriented Programming 의 약자로 관점지향 프로그래밍이라고 부른다. IoC가 낮은 결합도와 관련된 것이라면 AOP 는 높은 응집도와 관련되어 있다. 서비스들의 비즈니스 메소드들은 복잡한 코드로..

sjh836.tistory.com

http://blog.naver.com/PostView.nhn?blogId=chocolleto&logNo=30086024618&categoryNo=29&viewDate=¤tPage=1&listtype=0

 

3. 스프링 AOP (AspectJ의 Pointcut 표현식)

6. AspectJ의 Pointcut 표현식 □ POJO 클래스를 이용하여 AOP를 적용하는 두 가지 방법 - XM...

blog.naver.com

 

반응형