私は外部の場所から2つのプロパティファイルを読むことをお勧めします。これは、コマンドライン引数を経由してロードする必要があります。
configuration.properties - >これは、通常のプロパティファイルで、公開情報が含まれています。
secure.properties - >これは暗号化されたパスワードが含まれています。
私は、コマンドの次の行のパラメータを与えています
-Dspring.config.location=file:C:\Project\properties\configuration.properties, file:C:\Project\properties\security\dev\secure.properties
プロパティがconfiguration.properties
正常に動作しています。私は、直接ファイルをロードするのではなく、プロパティを使用していないよう。
ここでは、この暗号化されたファイルのために私は起きていない明示的にパスと負荷を渡す必要があります。
また、utilのは、EncryptedPropertiesReader
ジャーに利用可能であり、したがって、それを変更することはできません。
ここでは、キャッチは私がsecure.propertiesを使用する必要がある方法です
私たちは、クラスを持っていますEncryptedPropertiesReader
。そして、それは含まれていload(string path)
メソッドを。
したがって、私は、のパスを渡す必要がありsecure.properties
、ファイルを。
すなわち
String env = "dev"
Properties p = EncryptedPropertiesReader.load("security\" + env + "\secure.properties");
System.out.println(p); // null
異なる環境(UNIX)で、私は別のパスを持っていますので、ここでは、私は絶対パスを与えることはできません。
このように、コマンドラインは私のオプションと、あまりにも外部の特性を維持することが必要です。
ここで私が試した組み合わせは以下のとおりです。
コマンドライン :
安全なのクラスパスを与えます。プロパティ
-Dspring.config.location=file:C:\Project\properties\configuration.properties, classpath:C:\Project\properties\security\dev\
与え
spring.config.nane
-D spring.config.name=configuration, secure - Dspring.config.location=file:C:\Project\properties\configuration.properties, file:C:\Project\properties\security\dev\secure.properties
に\変えてみました/
URLのパスが渡されました
("secure.properties");
//私はクラスパスをロードする仕事に期待("/secure.properties");
//私はクラスパスをロードする仕事に期待
上記の組み合わせはどれも働きました。
間違って何が起こっているのか任意のアイデア?それとも私が何かを逃していますか?
長い質問に対して謝罪。
これは、uは、環境変数を使用して任意の場所からプロパティをロードすることができる方法です
-Dspring.config.location="C:\Project\properties\", -Dsecure.properties.location="C:\Project\properties\security\dev\"
@PropertySources({
@PropertySource("file:${spring.config.location}/configuration.properties"),
@PropertySource("file:${secure.properties.location}/secure.properties")})