
説明する
1. Cglib エージェントはサブクラス エージェントと呼ぶことができ、メモリ内にサブクラス オブジェクトを構築してターゲット オブジェクトの機能を拡張します。
静的プロキシと JDK プロキシの両方で、インターフェイスを実装するためのオブジェクトが必要です。プロキシ オブジェクトが単一のオブジェクトである場合もありますが、このときは Cglib プロキシを使用できます。
2. Cglib は、Enhancer を通じてプロキシ クラスを生成し、MethodInterceptor インターフェイスを実装することによってインターセプト メソッドを実装します。
拡張メソッドをメソッドに追加し、反射型 Method または MethodProxy 継承クラスを使用して元のメソッドを呼び出すことができます。
例
public class TVProxyCglib は MethodInterceptor を実装します {
//ターゲットオブジェクトのプロキシオブジェクトを作成 public Object getProxyInstance(Class c){
//1. ツールクラス エンハンサー エンハンサー = new Enhancer();
//2.親クラスを設定しますEnhancer.setSuperclass(c);
//3.コールバック関数を設定しますenhancer.setCallback(this);
//4. サブクラス(プロキシオブジェクト)を作成します。
リターンenhancer.create();
}
@オーバーライド
public Object intercept(Object o, Method メソッド, Object[] オブジェクト, MethodProxy methodProxy) throws Throwable {
System.out.println("TVProxyFactory の拡張....");
オブジェクト object = methodProxy.invokeSuper(o, オブジェクト);
オブジェクトを返します。
}
}上記は Java での Cglib エージェントの使用法です。皆さんのお役に立てれば幸いです。
その他の Java 学習ガイド: Java チュートリアル
このチュートリアルの動作環境: Windows 7 システム、Java 10 バージョン、DELL G3 コンピューター。