Javaアプリケーションでハードコードされた構成パスを回避するためにResourceBundleを使用するにはどうすればよいですか?
-
03-07-2019 - |
質問
Javaアプリの構成データのハードコーディングされたパスへの依存関係を排除したいのですが、ResourceBundleを使用すると、クラスローダーを使用してリソースを見つけることができることを理解しています。
リソースへのハードコードされたパス(たとえば、クラスに必要な.properties構成データファイル)をResourceBundleを適切に使用して置き換える方法を教えてもらえますか?可能であればシンプルでわかりやすい例、ありがとうございます。
解決
Java 6より前、通常はResourceBundleが許可されています:
Java 6には ResourceBundleが付属しています。 ResourceBundlesの他のソースへの扉を開くControl クラス。例:
- XMLファイル(Javadocの例2を参照)
- データベース行
これがお役に立てば幸いです。
他のヒント
Resource.getBundle(String)。クラスパス上のリソースの完全修飾名を渡して、プロパティファイルとしてロードします。
ResourceBundleは必要ありません。単純なPropertiesオブジェクトでジョブを実行できます。クラスローダーを使用してプロパティファイルの入力ストリームを取得し、それを使用して値をロードします。より高度なユーザー設定を処理する必要がある場合は、設定API 。
よろしく
Resource.getBundle(..)の背後にあるトリックは、クラスローダーの使用です。 this.getClass()。getClassLoader()を介してアクセスすることにより、クラスパスにあるすべてのものをロードできます。 Resource.getBundle(..)は、リソース/場所のトピックで使用する実用的なヘルパーです。