カスタムクラスローダーを作成する必要があるのはなぜですか? 実世界の例は素晴らしいでしょう!
4 に答える
Java EE サーバーや OSGI コンテナーなどのアプリケーション サーバーは、カスタム クラスローダーを使用して、ソフトウェアの動的な更新と削除をサポートします。
動的コード インジェクションをサポートするために、他のカスタム クラスローダーが使用されます (Java 5.0 インストルメンテーション以降が推奨されます)。
典型的なケースは次のとおりです。
実行時にクラスを計測/ロードします。
暗号化されたクラスをロードします。
リモート クラスの読み込み。
これは、自分で作成する必要があると思われるものではありませんが、複雑なフレームワークの一部として使用する場合があります。たとえば、依存性注入は、ClassLoaderを使用して実装されることがよくあります。カスタムクラスローダーのもう1つの一般的な使用法は、単体テストです。カスタムクラスローダーを使用して、テスト対象のユニットによってロードされたクラスを、制御可能な方法で応答する「ダミー」バージョンに置き換えることができます(たとえば、エラーをシミュレートするために使用できます。作成するのは難しい)。
率直に言って、非標準のクラスローダーのない Java エコシステムを想像するのは非常に困難です。疎結合アーキテクチャの多くは、クラスローダーに基づいています。JSPF (Java Simple Plugin Framework) に数時間費やすことをお勧めします。実践的な経験だけが本当に価値があるからです。JSPF は非常にシンプルであり、カスタム クラスローダーが必要な場合の潜在的なケースを理解できるだけでなく、そのようなソリューションの力を感じることができます。
簡単な計画に従うようにしてください。
- インターフェース (コントラクト) を定義する
- 独立したモジュール/jar として実装を提供する
- JSPF と以前に定義されたコントラクトを使用して、利用可能な実装を検出します
- 発見された実装でいくつかの有用なことを行う
- 疎結合システムであることを理解する
- この例でクラスローダーが実際にどのように使用されているかを調べてください
次のリンクも参照してください。