以下の行で:
これらは、クラスローダーを取得する2つの方法です
1) Thread.currentThread().getContextClassLoader();
2) getClass().getClassLoader();
この2つの違いを誰か教えてください。
また、私の 2 番目の質問は、Thread.currentThread().getContextClassLoader() をいつ使用するかです。
私はすでに同じことに関して StackOverflow に関するいくつかの投稿を参照しましたが、基本的な答えは見つかりませんでした。
あなたが提案した質問の答えを見ました。
スレッドのコンテキスト クラスローダーと通常のクラスローダーの違い
スレッド コンテキスト クラスローダは、クラスローディング委任スキームの周りにバック ドアを提供します。JNDI を例にとると、その根幹は rt.jar (J2SE 1.3 以降) のブートストラップ クラスによって実装されますが、これらのコア JNDI クラスは、独立したベンダーによって実装され、アプリケーションの -classpath にデプロイされる可能性がある JNDI プロバイダーをロードする可能性があります。このシナリオでは、親クラスローダ (この場合は最初のクラスローダ) が、その子クラスローダの 1 つ (たとえば、システムのクラスローダ) から見えるクラスをロードする必要があります。通常の J2SE 委譲は機能しません。回避策は、コア JNDI クラスでスレッド コンテキスト ローダーを使用することです。これにより、適切な委譲とは反対の方向にクラスローダー階層を効果的に「トンネリング」します。
回避策は、コア JNDI クラスでスレッド コンテキスト ローダーを使用することであることが示唆されているため、この場合にこれがどのように役立つかわかりませんでした。
親クラスローダを使用して実装ベンダー クラスをロードしたいのですが、それらは親クラスローダから見えません。この親クラスローダーをスレッドのコンテキストクラスローダーに設定したとしても、親を使用してそれらをロードするにはどうすればよいですか。
提案してください