9

カスタムクラスローダーを作成する必要があるのはなぜですか? 実世界の例は素晴らしいでしょう!

4

4 に答える 4

5

Java EE サーバーや OSGI コンテナーなどのアプリケーション サーバーは、カスタム クラスローダーを使用して、ソフトウェアの動的な更新と削除をサポートします。

動的コード インジェクションをサポートするために、他のカスタム クラスローダーが使用されます (Java 5.0 インストルメンテーション以降が推奨されます)。

于 2012-10-08T17:45:19.973 に答える
4

典型的なケースは次のとおりです。

  • 実行時にクラスを計測/ロードします。

  • 暗号化されたクラスをロードします。

  • リモート クラスの読み込み。

于 2012-10-08T17:45:14.940 に答える
2

これは、自分で作成する必要があると思われるものではありませんが、複雑なフレームワークの一部として使用する場合があります。たとえば、依存性注入は、ClassLoaderを使用して実装されることがよくあります。カスタムクラスローダーのもう1つの一般的な使用法は、単体テストです。カスタムクラスローダーを使用して、テスト対象のユニットによってロードされたクラスを、制御可能な方法で応答する「ダミー」バージョンに置き換えることができます(たとえば、エラーをシミュレートするために使用できます。作成するのは難しい)。

于 2012-10-08T17:47:14.817 に答える
1

率直に言って、非標準のクラスローダーのない Java エコシステムを想像するのは非常に困難です。疎結合アーキテクチャの多くは、クラスローダーに基づいています。JSPF (Java Simple Plugin Framework) に数時間費やすことをお勧めします。実践的な経験だけが本当に価値があるからです。JSPF は非常にシンプルであり、カスタム クラスローダーが必要な場合の潜在的なケースを理解できるだけでなく、そのようなソリューションの力を感じることができます。

簡単な計画に従うようにしてください。

  • インターフェース (コントラクト) を定義する
  • 独立したモジュール/jar として実装を提供する
  • JSPF と以前に定義されたコントラクトを使用して、利用可能な実装を検出します
  • 発見された実装でいくつかの有用なことを行う
  • 疎結合システムであることを理解する
  • この例でクラスローダーが実際にどのように使用されているかを調べてください

次のリンクも参照してください。

于 2012-10-08T21:09:11.053 に答える