프로그래밍/Spring & Spring boot

14 Spring : @Pointcut 어노테이션 표현식

pupu91 2022. 9. 2. 18:30
반응형

 

 

Pointcut 표현식

: execution 속성에 설정

execution(* com.greedy.diz..*Impl.*(..))

*: 리턴타입 / com.greedy.. : 패키지 경로 / *Impl. : 클래스명 / *(..) : 메소드명 및 매개변수

리턴 타입과 매개변수를 무시하고, com.greedy.biz.패키지로 시작하는 클래스 중
이름이 Impl로 끝나는 클래스의 모든 메소드를 뜻함.

 

 

 

 

@Pointcut 어노테이션 주요 표현식

 

1. 리턴타입

표현식 설명
*
모든 리턴 타입 허용

void
리턴타입이 void인 메소드만 선택

!void
리턴타입이 void가 아닌 메소드 선택

 

 

 

2. 패키지

표현식 설명
com.greedy.test
정확하게 com.greedy.test 패키지만 선택

com.greedy.test..
com.greedy.test 로 시작하는 모든 패키지 선택

com.greedy.test..*impl
 com.greedy.test 로 시작해서 마지막 패키지 이름이 impl로 끝나는 패키지 선택

 

 

반응형

 

3. 클래스

표현식 설명
BoardServiceImpl
BoardServiceImpl 클래스만 선택

*Impl
클래스 이름이 Impl로 끝나는 클래스만 선택

BoardService+
클래스 이름 뒤에 '+'가 붙으면 해당 클래스로부터 파생된 모든 자식 클래스 선택
인터페이스 뒤에 '+'가 붙으면 해당 인터페이스를 구현한 모 든 클래스 선택

 

 

 

 

4. 메소드

표현식  설명
*(..)
가장 기본 설정으로 모든 메소드 선택

get*(..)
메소드 이름이 get으로 시작하는 모든 메소드 선택

 

 

 

 

 

5. 매개변수

표현식 설명
(..)
매개변수의 개수와 타입에 제약이 없음을 의미

(*)
반드시 1개의 매개변수를 가진 메소드 선택

(com.greedy.user.User VO)
매개변수로 UserVO를 가지는 메소드만 선택,
이때 클래스의 패키지 경로는 반드시 포함

(!com.greedy.user.Use rVO)
매개변수로 UserVO를 가지지 않는 메소드

(Integer, ..)
한 개이상의 매개변수를 가지되,
첫번째 매개변수의 타입이 Integer 인 메소드만 선택

(Integer, *)
반드시 두 개의 매개변수를 가지되,
첫번째 매개변수의 타입이 Integer 인 메소드만 선택

반응형