説明する
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 コンピューター。