cglib 에이전트 의 간단 한 사용
7225 단어 자바 기반
Cglib 의 대리 의 주요 원 리 는 동태 적 으로 목표 류 에 하위 클래스 를 생 성 한 다음 에 방법 으로 차단 기술 로 부모 류 방법 에 대한 호출 을 차단 하고 추 세 를 따라 절단면 논 리 를 짜 는 것 이다.
/**
* @author djh on 2019/4/17 20:00
* @E-Mail [email protected]
*/
public class CglibProxy implements MethodInterceptor { //
private Enhancer enhancer = new Enhancer();
public Object getProxy(Class targetClass) {
enhancer.setSuperclass(targetClass);
enhancer.setCallback(this); //
return enhancer.create(); //
}
@Override
public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
System.out.println("Cglib ");
return methodProxy.invokeSuper(o, objects);
}
}
대상 클래스: (즉, 피 에이전트 클래스)
/**
* @author djh on 2019/4/18 16:49
* @E-Mail [email protected]
*/
public class CglibSupper {
public void method() {
System.out.println(" ");
}
}
데모 사용:
/**
* @author djh on 2019/4/1 19:53
* @E-Mail [email protected]
*/
public class Demo {
public static void main(String[] args) {
CglibProxy cglibProxy = new CglibProxy();
CglibSupper cglibSupper = (CglibSupper) cglibProxy.getProxy(CglibSupper.class);
System.out.println(cglibSupper.getClass().getName()); //
cglibSupper.method();
}
}
출력:
demos.cglib.demo.CglibSupper$$EnhancerByCGLIB$$b2ce976a //
Cglib
Process finished with exit code 0
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
범용 용법 예시앞으로 51CTO 에 정착 해 기술 개발 에 전념 할 테 니 잘 부탁드립니다.다음 코드 는 자신 이 (저자: 이 흥 화) 를 공부 할 때 두 드 린 코드 로 주석 이 완비 되 어 있다. 범용 클래스 Point. ja...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.