관리 메뉴

웹개발 블로그

[AOP] 💥💥포인트컷 지시자 - execution 본문

◆ SPRING BOOT/AOP

[AOP] 💥💥포인트컷 지시자 - execution

쿠키린 2024. 8. 14. 17:10

PointCut

조인 포인트 중에서 어드바이스가 적용될 위치를 선별하는 기능

execution (포인트컷 지시자 중 하나)

메소드 실행 조인 포인트를 매칭한다. 스프링 AOP에서 가장 많이 사용하고, 기능도 복잡하다.

 

형식 : execution(접근제어자? 반환타입 선언타입?메서드이름(파라미터) 예외?)

  • 메소드 실행 조인 포인트를 매칭한다.
  • ?는 생략할 수 있다.
  • * 같은 패턴을 지정할 수 있다.

예시1

execution(public String hello.aop.member.MemberServiceImpl.hello(String))

 

설명

접근제어자 : public

반환타입 : String

선업타입 : hello.aop.member.MemberServiceImpl

메서드이름 : hello

파라미터 : (String)

예외? : 생략


예시2 - 가장 많이 생략한 포인트 컷

execution(* *(..))

 

설명

접근제어자?:생략

반환타입: *  <-- 아무 값이 들어와도 됨.

선언타입?: 생략

메서드이름: *

파라미터: (..) <-- 파라미터의 타입과 파라미터 수가 상관없다는 뜻.

예외?: 없음


패키지 명

. : 정확하게 해당 위치의 패키지

.. : 해당 위치의 패키지와 그 하위 패키지도 포함

 


메서드 명 매칭 

hello(..)

hel*(..)

*el*(..)

💥 메서드 이름 앞 뒤에 *을 사용해서 매칭할 수 있다.

 

메서드 파라미터 타입 제한(아래 메소드명 전체 가능하다는 가정 )

*(String, *) : 파라미터 갯수 2개 제한, 첫번째 파라미터 String 고

*(String, ..)  : 첫번째 파라미터는 String타입 고정, 뒤에는 숫자와 무관하게 모든 파라미터 , 모든 타입을 허용

*(String, String) : 파라미터 둘다 String 타입

*(..) : 뒤에는 숫자와 무관하게 모든 파라미터 , 모든 타입을 허용(💥파라미터가 없어도 됨) == 0..* 으로 이해하면 됨.