誰でも私に何を説明できますか?
ClassLoaders
は委任を行うことができるという事実を指していると思います。私は、設定ファイルを見つけるために、たとえば、
MyClass.class.getClassLoader().getResource("/services/org/my/Service");
を実行する場合、それはされないように、それは親ClassLoader
、そしてその親などに多分その1へのClassLoader
MyClass
のための代表者かもしれClassLoader
実際に設定ファイルを読み込む(MyClass.class.getClassLoader()
)の質問を受けました。その場合
、仕様は名前がMyClass.class.getClassLoader()
からアクセス可能である必要があり、実際にClassLoader
は、設定ファイルを探しに関係なく、サービスクラス、それがいることを言います。私はここで自分たちの代表団を排除しないように "アクセス可能"にしています。
実際には、例えば、JavaEEコンテナにあるように、ClassLoadersのチェーンを上に単純な委任よりも面白い戦略に従う実装が、おそらくより顕著になります。
構成ファイルの場所を特定するためにどのクラスローダーを使用すればよいですか。
一般的に言えば、おそらくそうする必要はありません。任意のサービス構成ファイルによって指定されたサービスクラスがすべてconfigファイル自体と同じ(すべて)同じClassLoader
を介してアクセスできるようにすることをお勧めします。それらを同じjar
に入れることは、これを達成するはずです。