cglib プロキシと jdk ダイナミック プロキシの違いは、JDK ダイナミック プロキシはインターフェイスに基づいてプロキシ オブジェクトのプロキシ インスタンスを作成するのに対し、Cglib プロキシは継承に基づいてプロキシ クラスのサブクラスを生成することです。
このチュートリアルのオペレーティング システム: Windows 10 システム、jdk15 バージョン、Dell G3 コンピューター。
JDK 動的プロキシと Cglib プロキシはどちらも Java 言語でのプロキシの実装方法ですが、使用法、パフォーマンス、適用可能なシナリオの点で 2 つの間には特定の違いがあります:
1. JDK 動的プロキシ:
インターフェイスに基づいて、プロキシされたオブジェクトのプロキシ インスタンスを作成します。オブジェクトをプロキシする場合、オブジェクトは 1 つ以上のインターフェイスを実装し、JDK ライブラリに依存する必要があります。 JDK 動的プロキシは、リフレクション メカニズムを使用して、プロキシ オブジェクトのすべてのインターフェイスを含むプロキシ クラスを生成し、ターゲット オブジェクトをプロキシできるインターフェイス内のすべてのメソッドをカバーします。
利点: サードパーティのライブラリを参照する必要がなく、JRE ランタイム環境で実行でき、プロキシ オブジェクトの生成がより簡単かつ高速です。欠点: インターフェイスに基づくプロキシ処理のみが可能です。サポートされており、クラスはエージェントになることができないため、その役割は限定されています。
2. Cglib プロキシ:
継承に基づいてプロキシ クラスのサブクラスを生成し、追加しますプロキシロジック。プロキシされたクラスを継承するため、最終クラス、プライベート、静的などの継承不可能な属性の影響を受けます。
利点: Cglib はクラスのプロキシをサポートしており、インターフェイスがない場合でも、コールバック インターフェイスを設定することで間接的に実現できます。 JDK ダイナミック プロキシよりもパフォーマンスが高く、インターフェイスを実装していないターゲット オブジェクトをプロキシできます。
プロキシ クラスを生成するプロセスでは、Cglib はバイトコードを動的に生成する方法を採用しています。プロキシ クラスは、プロキシ クラスによってロードされる前に作成され、メモリにキャッシュされます。呼び出しごとに、キャッシュされたプロキシ クラスが直接使用されます。ほとんどの場合、Cglib プロキシは、JDK 動的プロキシよりも大規模なメソッドのインターセプトおよび拡張シナリオに適しています。
以上がcglib プロキシと jdk ダイナミック プロキシの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。