スレッドコンテキストクラスローダを設定し
、次の2つの出力のを、何をすべきですか?
現在のスレッドのデフォルトのクラスローダに割り当てられたアプリケーション・クラス・ローダー
:JDBC MySQLの例を駆動することにより
上記の図は、コードの最初の行を、唯一のブートクラスローダーによりロードされ、トップレベルのインタフェースであり、ドライバインターフェイスに。
数行のコード以下は、特定の実装APPClassLoaderクラスローダがによって駆動されて見つけることができる
のはなぜ?良い名前空間を言うの?
ServiceLoader、主にロードサービスの特定の実装では、サービスは特定の実装は、様々なインターフェイスまたは抽象クラスのセットを備えており、サービスプロバイダは、対応するサービスです。
:このドキュメントの内容は
2つのドライバのうちのトラバーサルの上、です。
この処理負荷
serviceLoaderローダーが親をロードするクラスローダーに適用されるが、最終的にブートクラスローダによってロードされます。
したがって、ブートクラスローダーは、上図の処理負荷のライン2がロードされ
ていない場合
ので、それはドライバのMySQLをクラスパスをロードするクラスローダを起動しません。
だから、一緒に現在のスレッドのクラスローダと、着信アプリケーションクラスローダへのアクセスは、あなたは、MySQLドライバの実装をロードすることができます。
両親は委任メカニズムが壊れ
出力の最初に見て
、拡張クラスローダーの着信クラスローダ場合
達成するために、その後whileループが実行されていない、つまり、ドライブにロードされていません