Spring
포인트컷 표현식
요리하다그만둠
2022. 8. 24. 17:07
포인트컷을 이용하면 어드바이스 메서드가 적용될 비즈니스 메서드를 정확하게 필터링할 수 있는데,
이때 다양한 포인트컷 표현식을 사용할 수 있습니다. 포인트컷 표현식은 메서드처럼 생긴 execution 명시자를 이용하며
execution 명시자 안에 포인트컷 표현식을 기술합니다. 전체적인 구조는 다음과 같습니다.
execution( * com.multicampus.biz.*Impl.get*(...) )
* <- 리턴타입
com.multicampus.biz <- 패키지 경로
*Impl <- 클래스명
get*(..) <- 메서드명 매개 변수
1. 리턴타입 지정
리턴타입 지정에서 가장 기본적인 방법은 ' * ' 캐릭터를 이용하는 것입니다.
표현식 | 설명 |
* | 모든 리턴타입 허용 |
void | 리턴타입이 void인 메서드 선택 |
!void | 리턴타입이 void가 아닌 메서드 선택 |
2. 패키지 지정
패키지 경로를 지정할 때는 ' * ', '..' 캐릭터를 이용한다.
표현식 | 설명 |
com.springbook.biz | 정확하게 com.springbook.biz 패키지만 선택 |
com.springbook.biz.. | com.springbook.biz 패키지로 시작하는 모든 패키지 선택 |
com.springbook..impl | com.springbook 패키지로 시작하면서 마지막 패키지 이름이 impl로 끝나는패키지 선택 |
3. 클래스 지정
클래스 이름을 지정할때는 ' * ', ' + ' 캐릭터를 이용한다.
표현식 | 설명 |
BoardServiceImpl | 정확하게 BoardServiceImpl 클래스만 선택 |
*Impl | 클래스 이름이 Impl로 끝나는 클래스만 선택 |
BoardService+ | 클래스 이름 뒤에 '+'가 붙으면 해당 클래스로부터 파생된 모든 자식 클래스 선택, 인터페이스 뒤에 '+' 가 붙으면 해당 인터페이스를 구현한 모든 클래스 선택 |
4, 메서드 지정
메서드를 지정할 때는 주로 ' * ' 캐릭터를 사용하고 매개변수를 지정할 때는 ' .. '를 사용합니다.
표현식 | 설명 |
*(..) | 가장 기본 설정으로 모든 메서드 선택 |
get*(..) | 메서드 이름이 get으로 시작하는 모든 메서드 선택 |
5. 매개변수 지정
매개변수를 지정할 때는 ' .. ', ' * ' 캐릭터를 사용하거나 정확한 타입을 지정합니다.
표현식 | 설명 |
(..) | 가장 기본 설정으로 '..' 은 매개변수의 개수와 타입에 제약이 없을을 의미 |
(*) | 반드시 1개의 매개변수를 가지는 메서드만 선택 |
(com.springbook.user.UserVO) | 매게변수로 UserVO를 가지는 메서드만 선택, 이때 클래스의 패키지 경로가 반드시 포함되어 있어야 함 |
(!com.springbook.user.UserVO) | 매게변수로 UserVO를 가지지 않는 메서드만 선택 |
(Integer, ..) | 한 개 이상의 매게변수를 가지되, 첫 번째 매게변수의 타입이 Inte-ger인 메서드만 선택 |
(Integer, * ) | 반드시 두 개의 매게변수를 가지되, 첫 번째 매게변수의 타입이 Inte-ger인 메서드만 선택 |