springAOP 에서 joinpoint 로 접점 방법의 매개 변 수 를 가 져 옵 니 다.

springAOP joinpoint 절 입 점 방법의 인 자 를 가 져 옵 니 다.
개념:
대상 에 접근 하 는 방법 은 joint point(@around 용 poceeding joint point)입 니 다.
1.테스트 와 같은 대상 정 보 를 가 져 옵 니 다.component@80387a이런
2.[Ljava.lang.Object;@183 cfe 9(물론 대상 의 arrays.toString()방법 으로 복원 할 수 있 습 니 다)
3.또한 String test.coponent.test 1(String)과 같은 강 화 된 방법 도 얻 을 수 있 습 니 다.
요약:방문 목표 방법 파라미터,세 가지 방법(실제 네 가지,먼저 세 가지)이 있 습 니 다.
joinpoint.getargs():파 라 메 터 를 가 져 옵 니 다.
주:구성 요소 에서 test 방법의 인 자 를 가 져 오 는 것 입 니 다.test 방법 에 여러 개의 인자 가 있 으 면 이 방법 은 여러 개의 인 자 를 되 돌려 줍 니 다.원 하 는 것 은 for 순환 과 판단 을 통 해 선별 합 니 다.
2.joinpoint.getTarget():대상 정보 얻 기
3.joinpoint.getSignature():(signature 는 신호,표지 의 뜻):강 화 된 방법 과 관련 된 정 보 를 얻 습 니 다.그 후속 방법 은 두 가지 가 있 습 니 다.
getDeclaring TypeName:방법 이 있 는 가방 이름과 클래스 이름 을 되 돌려 줍 니 다.
getname():방법 명 을 되 돌려 줍 니 다.
코드 를 보 세 요!
구성 요소 클래스

@Component
public class component {
    public void test() {
    }
    public void test1(String name2) {
    }
}
@afterreturning 을 예 로 들 어 설명 하 겠 습 니 다.
3 Signature 방법 을 먼저 보도 록 하 겠 습 니 다.

@AfterReturning(value="execution(* test.*.*(..))",returning="name2")
    private void test1(JoinPoint jp ,String name2) {
                       System.out.println(jp.getSignature());
                       System.out.println(jp.getSignature().getName());
                System.out.println(jp.getSignature().getDeclaringTypeName());
}
Signature 방법 에서 의 출력 결과
거봐,
getSignature());이러한 정 보 를 얻 었 습 니 다:수정자+패키지 이름+구성 요소 이름(클래스 이름)+방법 명
getSignature().getName()); :방법
getSignature().getDeclaringTypeName():패키지 이름+구성 요소 이름(클래스 이름)
우리 1 getargs()더 보 자.

System.out.println(jp.getArgs());
System.out.println(Arrays.toString(jp.getArgs()));
결과 출력
jp.getArgs():한 그룹의 배열 대상 을 알 수 없 는 대상 을 얻 을 수 있 습 니 다.그러나 우 리 는 이것 이 대상 이라는 것 을 알 고 있 습 니 다.매개 변수 대상 인 Arrays.toString(jp.getArgs()을 알 고 있 습 니 다.그러나 우 리 는 Arrays 클래스 에서 배열 문자열 을 바 꾸 는 방법:arrays.tostring(지정 한 배열 내용 을 문자열 로 표시 합 니 다)을 사용 하면 구체 적 인 숫자 를 얻 을 수 있 습 니 다.
3.getTarget()방법:이 방법 은 증강 처 리 된 대상 을 되 돌려 줍 니 다.(이것 은 getthis()방법 과 비슷 하지만 나 온 값 은 같 지 않 습 니 다)

System.out.println(jp.getTarget());
출력 결과
매개 변수 도 관련 정보 도 아 닌 실제 대상 이다.
요약:이상 은 목표 방법의 매개 변 수 를 방문 하 는 모든 방법(getthis()을 제외 하고 사실은 한 대상 이 생 성 한 프 록 시 대상 을 되 돌려 주 는 것 입 니 다.
얻 은 대상 은 gettarget()방법 과 비슷 해서 거의 똑같다 고 할 수 있 습 니 다.그러나 저 는.eqauls 와==이 같 지 않 습 니 다)이런 방법 을 사용 한 적 이 있 습 니 다.document(dom)프로 그래 밍 의 가 져 온 요소 document.getelement by id()가 생각 납 니 다.이 요 소 를 가 져 오 면 자신의 코드 가 다른 지 수정 하거나 관찰 할 수 있 습 니 다.
JoinPoint 를 사용 하여 알림 방법 인 자 를 가 져 오고 알림 방법 에 전달 합 니 다.
현재 알려 진 방법 에 접근 하 는 대상,대리 대상,방법 파라미터 등 데 이 터 를 제공 합 니 다.

package org.aspectj.lang;
import org.aspectj.lang.reflect.SourceLocation;
public interface JoinPoint {
    String toString();         //            
    String toShortString();     //              
    String toLongString();     //              
    Object getThis();         //  AOP    
    Object getTarget();       //      
    Object[] getArgs();       //           
    Signature getSignature();  //         
    SourceLocation getSourceLocation();//                
    String getKind();        //     
    StaticPart getStaticPart(); //         
}
서 라운드 알림 에 사용 되 며,proceed()방법 으로 목표 방법 을 실행 합 니 다.

public interface ProceedingJoinPoint extends JoinPoint {
    public Object proceed() throws Throwable;
    public Object proceed(Object[] args) throws Throwable;
}
알림 방법 서명,연결 점 형식 등 연결 점 의 정적 부분 에 접근 합 니 다.

public interface StaticPart {
Signature getSignature();    //         
String getKind();          //     
    int getId();               //    
String toString();         //            
    String toShortString();     //              
    String toLongString();     //              
}
특별 설명:JoinPoint 는 첫 번 째 인자 여야 합 니 다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기