-
Spring AOP PointCut 표현식 정리Java/Spring 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
https://snoopy81.tistory.com/296
https://sjh836.tistory.com/157
반응형'Java > Spring' 카테고리의 다른 글
[Spring Security] CORS 에 대하여 (0) 2019.11.11 Spring Security 정리 (1) 2019.10.05 [Spring] @Transactional 속성 정리 (0) 2019.09.06 JWT 에 대한 간단 정리 (0) 2019.08.04 맨날 까먹는 AOP 정리 (1) 2019.07.20