Spring AOP 설정 의 @ PointCut 문법

@ PointCut 문법
  • 절 점 표현 식
  • 1. execution
  • 2. within
  • 3. this 와 target
  • 4. args(paramType)
  • 5. @within(annotationType)
  • 6. @target(annotationType)
  • 7. @annotation(annotationType)
  • 8. @args(annotationType)


  • @ Pointcut 은 절 점 표현 식 으로 정의 하거나 &, | | 과!라 는 식 으로 조합 했다.
    절 점 식
    1. execution
        Spring 절단면 입도 가 가장 작은 것 은 방법 등급 이기 때문에 execution 표현 식 은 유형, 유형, 방법 명, 매개 변수 명 등 방법 과 관련 된 부품 을 명확 하 게 지정 하 는 데 사용 할 수 있 으 며, Spring 에 서 는 대부분 AOP 를 사용 해 야 하 는 업무 장면 도 방법 등급 에 만 도달 하면 되 기 때문에 execution 표현 식 을 사용 할 때 가장 광범 위 하 다.    문법 (물음표 표시 선택 가능):
    execution(modifiers-pattern? ret-type-pattern declaring-type-pattern?name-pattern(param-pattern) throws-pattern?)
    
  • Modifiers - pattern (선택 가능): 공공, private, proctected 와 같은 수정자 에 접근 하 는 방법;
  • Ret - type - pattern: 방법의 반환 값 유형, 예 를 들 어 void, String 등;
  • Declaring - type - pattern (선택 가능): 방법 이 있 는 클래스 의 전체 경로 표현 식, 예 를 들 어 com. xxx. controller;
  • Name - pattern: 방법 명 형식 표현 식, 예 를 들 어 get * (), query * ();
  • Param - pattern: 방법의 매개 변수 유형 표현 식, 예 를 들 어 java. lang. String,... (임의의 매개 변 수 를 표시 함);
  • Throws - pattern (선택 가능): 방법 이 던 진 이상 유형, 예 를 들 어 java. lang. Exception;

  •     다음은 execution 표현 식 의 예 입 니 다.
    execution(public * com..controller.*.insert*(..) java.lang.Exception)
    

        이 절 점 표현 식 은 come.. contrller 의 모든 클래스 에 일치 합 니 다. 방법 장식 부 호 는 Public 의 임 의 반환 값 이 며, insert 를 접두사 이름 으로 Exception 이상 유형 을 던 지 는 방법 입 니 다.이 예 는 ..* 마스크 를 사용 했다.
  • * 어댑터: 이 어댑터 는 주로 여러 문자 와 일치 하 는 데 사 용 됩 니 다.
  • .. 어댑터: 이 어댑터 는 0 개 이상 의 항목 을 표시 합 니 다. 주로 declaring - type - pattern 과 param - pattern 에 사 용 됩 니 다. declaring - type - pattern 에 사 용 될 경우 현재 가방 과 하위 가방 이 일치 하 는 것 을 표시 합 니 다. param - pattern 에 사 용 될 경우 0 개 이상 의 인 자 를 표시 합 니 다.
  • +: 지정 한 유형의 하위 형식 과 일치 합 니 다.형식 모드 뒤에 접미사 로 만 놓 을 수 있 습 니 다.java. lang. Number + java. lang 가방 에 있 는 모든 Number 의 자체 형식 과 일치 합 니 다.java. lang. Integer 와 일치 하면 java. math. BigInteger
  • 와 일치 합 니 다.
    2. within
        within 표현 식 의 입 도 는 클래스 입 니 다. 클래스 를 제한 하 는 데 사 용 됩 니 다. (어댑터 를 사용 할 수 있 습 니 다) 현재 표현 식 과 일치 하 는 모든 클래스 를 표시 합 니 다.    문법:
    within(declaring-type-pattern)
    

        예 를 들 어 아래 표현 식 은 com. spring. xxx. service 패키지 와 하위 패키지 의 모든 종 류 를 표시 합 니 다.
    within(com.spring.xxx.service..*)
    

    3. this 와 target
        this 표현 식 은 대상 이 프 록 시 에 의 해 생 성 된 프 록 시 대상 이 지정 한 형식 과 일치 해 야 차단 된다 는 것 을 나타 낸다.target 표현 식 은 대상 이 지정 한 형식 이 어야 차단 된다 는 것 을 나타 낸다.이로써 알 수 있 듯 이 this 는 대리 대상 에 작용 하고 target 은 목표 대상 에 작용 한다.    매 워 요? 목표 대상 과 대리 대상 이 뭐 예요?Spring 절단면 프로 그래 밍 에서 목표 대상 은 업무 논리 대상 이 고 대 리 는 업무 논리 에 대한 패 키 징 을 사용 하여 생 성 된 대상 입 니 다.JDK 동적 에이 전 트 를 사용 하면 대상 과 에이 전 트 는 두 개, CGLib 에이 전 트 는 한 개 대상 이다.대리 에 관 해 서 는 을 참고 할 수 있다.    Spring 에서 this 는 에이전트 대상 을 지정 한 유형의 클래스 로 매 칭 하고 target 은 업무 대상 을 지정 한 유형의 클래스 로 매 칭 합 니 다.예 는 다음 과 같다.
    this(com.spring.service.BaseService)
    target(com.spring.service.BaseService)
    

    4. args(paramType)
        args 표현 식 의 역할 은 지정 한 매개 변수 형식 과 수량 에 맞 는 방법 입 니 다. 클래스 경로 나 어떤 방법 이름 이 든 간 에.... 어댑터 를 사용 할 수 있 습 니 다. * 를 사용 할 수 없습니다.다음 표현 식 은 첫 번 째 매개 변 수 는 자바. lang. string 이 고 그 다음 에 임의의 매개 변수 가 될 수 있 는 방법 을 나타 낸다.
    args(java.lang.String,..)
    

    5. @within(annotationType)
        주 해 를 잘 싸 야 하 는 클래스 의 모든 연결 점 을 지정 합 니 다. 대상 을 호출 하 는 임의의 방법 이 차단 되 어 있 습 니 다.
    6. @target(annotationType)
        대상 과 일치 하 는 클래스 는 지정 한 주 해 를 포함 하고 있 으 며, 대상 을 호출 하 는 임의의 방법 은 차단 된다.    @target 과 @ within 의 차이 점
  • @ target (주석 A): 호출 된 대상 에 주석 A 가 있 는 지 판단 하고 있 으 면 차단
  • @ within (주해 A): 호출 된 방법 에 속 하 는 클래스 에 주해 A 가 있 는 지 판단 하고 있 으 면 차단
  • @ target 은 호출 된 대상 에 주목 하고 @ within 은 호출 방법 이 있 는 클래스
  • 에 주목 합 니 다.
    7. @annotation(annotationType)
        지정 한 주해 가 있 는 방법 과 일치 합 니 다. 호출 된 방법 은 지정 한 주 해 를 포함 합 니 다.
    8. @args(annotationType)
        방법 매개 변수 가 속 한 유형 에 지정 한 주석 이 있 습 니 다.메모: 방법 매개 변수 가 속 한 유형 에 지정 한 주석 이 있 습 니 다. 방법 매개 변수 에 주석 이 있 는 것 이 아 닙 니 다.
  • 1 개의 매개 변 수 를 일치 시 키 고 첫 번 째 매개 변수 가 속 한 클래스 에 Anno 1 주석
  • 이 있 습 니 다.
    @args(com.spring.aop.jargs.annotation.Anno1)
    
  • 여러 개의 매개 변수 와 일치 하고 여러 개의 매개 변수 가 속 한 유형 에 지 정 된 주석 이 있 습 니 다
  • @args(com.spring.aop.jargs.annotation.Anno1,com.spring.aop.jargs.annotation.Anno2)
    
  • 여러 개의 매개 변 수 를 일치 시 키 고 첫 번 째 매개 변수 가 속 한 클래스 에는 Anno 1 주석
  • 이 있 습 니 다.
    @args(com.ms.aop.jargs.demo2.Anno1,..)
    

    좋은 웹페이지 즐겨찾기