[解決済み] JDKのダイナミックプロキシとCGLibの違いは何ですか?
2022-04-21 18:29:13
質問
の場合 プロキシデザインパターン とはどのような違いがあるのでしょうか? JDKの動的プロキシ のようなサードパーティの動的コード生成APIを使用することができます。 CGLib ?
両方のアプローチを使用することの違いは何ですか?また、どのような場合にどちらを選ぶべきですか?
どのように解決するのですか?
JDK Dynamic Proxy はインターフェースによるプロキシしかできません (従って、ターゲットクラスはインターフェースを実装する必要があり、 プロキシクラスもそれを実装する必要があります)。
CGLIB(およびjavassist)はサブクラス化によってプロキシを作成することができます。このシナリオでは、プロキシはターゲットクラスのサブクラスとなります。インターフェイスは必要ありません。
つまり、Java Dynamic プロキシはプロキシができるのです。
public class Foo implements iFoo
ここで、CGLIBはプロキシできる。
public class Foo
EDITです。
javassistやCGLIBはサブクラス化によるプロキシを使用しているため、これに依存するフレームワークを使用する場合、finalメソッドを宣言したり、クラスをfinalにすることができないことをお伝えしておきます。これは、これらのライブラリがあなたのクラスをサブクラス化し、メソッドをオーバーライドすることを許可しないようにするためです。
関連
-
[解決済み] Spring Data JPAにおけるCrudRepositoryとJpaRepositoryのインターフェースの違いは何ですか?
-
maven プラグイン エラー プラグインの実行は、ライフサイクル構成ソリューションの対象外です。
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] StringBuilderとStringBufferの違いについて
-
[解決済み] java.lang.UnsupportedClassVersionError を修正する方法。サポートされていないメジャー.マイナーバージョン
-
[解決済み] JDKとJREの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
エラー java.util.NoSuchElementException
-
java.util.NoSuchElementException 原因解析と解決方法
-
Eclipseで "XXXX "の解決策を(型に)解決することができない
-
JavaMailのメール送信が失敗するケースとその説明の分析
-
Methodのinvokeメソッド実装のJavaリフレクション
-
xxx:jarのアーティファクトディスクリプタの読み込みに失敗した問題は解決しました。
-
spring-boot 401 このリソースにアクセスするには完全な認証が必要です エラー解決
-
自動配線された依存性のインジェクションに失敗しました。
-
HttpClientがGZIP形式でない場合の対処法
-
あるコードに出会いましたが、何に使うのか理解できません。 List<String> list = new ArrayList<String>() { { a