자바 에이전트 모델

1904 단어
문장 을 인용 하 다https://www.cnblogs.com/boboxing/p/8126046.html
프 록 시 모드 가 뭐 예요?
프 록 시 모델 은 디자인 모델 로 쉽게 말 하면 소스 코드 를 바 꾸 지 않 은 상황 에서 목표 대상 에 대한 기능 확장 을 실현 하 는 것 이다.
 
에이전트 의 역할 은 목표 코드 를 수정 하지 않 은 상태 에서 목표 에 대한 접근 을 제어 할 수 있 고 그 전후 에 자신의 업무 처리 코드 를 추가 할 수 있 으 며 목표 방법 에 대한 접근 을 막 을 수 있어 필터 와 차단기 와 유사 한 역할 을 한다.
 
에이전트 모드
  • 정적 에이전트
  • 계승       대리 대상 계승 목표 대상, 증강 방법 재 작성   단점: 대리 류 가 너무 많 고 복잡 하 다
  • 목표 대상 과 대리 대상 을 모 아 같은 인 터 페 이 스 를 실현 하고 대리 대상 에 목표 대상 을 포함 해 야 한다.  단점: 유사 폭발 도 발생 한다. 다만 계승 보다 조금 적다
  •  
    요약: 불확실 한 상황 에서 정적 대 리 를 사용 하지 않 으 면 코드 를 대필 하면 클래스 가 발생 하고 클래스 가 발생 하면 폭발 합 니 다.
     
  • 동적 에이전트
  • 1. JDK 동적 에이전트
  • 프 록 시 클래스 의 정적 방법 인 new ProxyInstance 를 호출 하면 됩 니 다. 이 방법 은 프 록 시 클래스 대상
  • 을 되 돌려 줍 니 다.
    static Object newProxyInstance(ClassLoader loader, Class>[] interfaces,InvocationHandler h )
              :
  • ClassLoader loader: 현재 대상 을 지정 하여 클래스 로 더 를 사용 하고 쓰기 고정
  • Class>[] interfaces: 목표 대상 이 실현 하 는 인터페이스의 유형, 쓰기 고정
  • InvocationHandler h: 사건 처리 인 터 페 이 스 는 하나의 실현 류 에 들 어가 야 하고 보통 익명 내부 류
  • 를 직접 사용 해 야 한다.
    생산 된 프 록 시 클래스 $Proxy 0 extends Proxy implements targerInterface 
    2. CGLib 동적 에이전트
    원리: CGLib 를 사용 하여 동적 대 리 를 실현 하고 프 록 시 클래스 가 인터페이스의 제한 을 전혀 받 지 않 으 며 CGLib 바 텀 은 ASM 바이트 코드 생 성 프레임 워 크 를 사용 하여 바이트 코드 기술 로 대 리 를 생 성 합 니 다.유일 하 게 주의해 야 할 것 은 CGLib 는 final 로 설명 하 는 방법 을 대리 할 수 없습니다. CGLib 원 리 는 피 에이전트 클래스 의 하위 클래스 를 동적 으로 생 성 하 는 것 이기 때 문 입 니 다.자세 한 분석 참조:https://www.cnblogs.com/monkey0307/p/8328821.html
    전제 조건:
  • cglib 의 jar 파일 을 도입 해 야 합 니 다. Spring 의 핵심 패키지 에 Cglib 기능 이 포함 되 어 있 기 때문에 spring - core - 3.2.5. jar
  • 를 직접 도입 할 수 있 습 니 다.
  • 목표 클래스 는 final
  • 일 수 없습니다.
  • 목표 대상 의 방법 이 final / static 이면 차단 되 지 않 습 니 다. 즉, 목표 대상 의 추가 업무 방법
  • 을 수행 하지 않 습 니 다.

    좋은 웹페이지 즐겨찾기