execution
Advice를 적용할 메서드까지 명시할 경우 사용된다.
제일 상세하게 적을 수 있다.
excution( [접근 제어자] , 리턴타입, [패키지], 메서드이름(파라미터) )
[ ]내용은 생략이 가능하다
@Pointcut("execution(public void get*(..))") // public void인 모든 get메소드
패키지 어디에 있든 메소드의 접근 제어자가 public이고
리턴타입이 void이며 메소드 명이 get으로 시작하고 매개변수가 몇개든 상관없다는 뜻이다.
@Pointcut("execution(* com.example.javaAop.*.*())") // com.example.javaAop 패키지에 파라미터가 없는 모든 메소드
메서드 리턴타입이 *로 어떤 것이든 상관이 없고
패키지가 com.example.javaAop에 있고
.*로 클래스의 이름은 상관이 없으며
.*()로 메서드의 명은 상관이 없지만 매개변수는 없는 메서드 들만 해당된다.
@Pointcut("execution(* com.example.javaAop..*.*())") // com.example.javaAop 패키지 & com.example.javaAop 하위 패키지에 파라미터가 없는 모든 메소드
메서드 리턴타입이 *로 어떤 것이든 상관이 없고
패키지가 com.example.javaAop에 있고
..*로 현제 패키지와 하위 패키지 까지 확인하며
.*()로 메서드의 명은 상관이 없지만 매개변수는 없는 메서드 들만 해당된다.
@Pointcut("execution(* com.example.javaAop.Worker.*())") // com.example.javaAop.Worker 안의 모든 메소드
메서드 리턴타입이 *로 어떤 것이든 상관이 없고
패키지가 com.example.javaAop에 있고
.Worker 패키지내 Worker라는 클래스만 해당되며
.*()로 메서드의 명은 상관이 없지만 매개변수는 없는 메서드 들만 해당된다.
within
메서드 까지 가진 않고 클래스까지만 명시하여
클래스에 존재하는 메서드에 적용시킬때 사용
@Pointcut("within(com.example.javaAop.*)") //com.example.javaAop 패키지 안에 있는 모든 메소드
com.example.javaAop 패키지 안에 있는 모든 메소드
@Pointcut("within(com.example.javaAop..*)") //com.example.javaAop 패키지 및 하위 패키지 안에 있는 모든 메소드
com.example.javaAop 패키지 및 하위 패키지 안에 있는 모든 메소드
@Pointcut("within(com.example.javaAop.Worker)") //com.example.javaAop.Worker 모든 메소드
com.example.javaAop.Worker 모든 메소드
bean
메서드나 클래스가 아닌 객체를 기준으로 적용한다.
bean이름을 가지고 적용하게 된다.
@Pointcut("bean(student)") //student 빈에만 적용
@Pointcut("bean(*ker)") //~ker로 끝나는 빈에만 적용
'스프링' 카테고리의 다른 글
Spring HandlerMapping, HandlerAdapter, DispatcherServlet, ViewResolver (0) | 2022.10.27 |
---|---|
Spring AOP Advice 5가지 (0) | 2022.10.27 |
Spring AOP (0) | 2022.10.26 |
Spring bean scope (0) | 2022.10.26 |
spring xml, @어노테이션 같이 사용한 DI (0) | 2022.10.25 |