1

私の .properties ファイルには次のものがあります。

connection1.username=${cloud.db.username}
connection1.password=${cloud.db.password}

これらの変数を実行/デバッグ構成で渡したい

私がする必要があるのは、JVMコマンドラインで次のパラメーターを渡すことだけだと思いました: -Dcloud.db.username=JOHN -Dcloud.db.password=SECRET.

しかし、コード呼び出しではProperties.getProperty()まだ戻ります${cloud.db.username}

IntelliJ IDEA で junit として実行しています。

4

4 に答える 4

4

-Dを使用してプロパティをjvmに渡すと、それらはシステムプロパティに配置されます(System.getProperties()を介してアクセスされます)。

コード内のファイルからjava.util.Propertiesを作成すると、完全に別個のプロパティのセットが得られます。

多くのアプリケーションでは、コマンドライン-Dオプションを介してファイルでプロパティを指定できます。これを行うには、2つの間に何らかのフォールバックメカニズムを実装し、どちらを優先するかを決定する必要があります。

また、一部のアプリケーションでは、プロパティを別のプロパティを参照するものとして定義できます。通常、これはjava.util.Propertiesを拡張またはラップすることによって行います。

これらの両方が機能することを期待していますが、どちらもJavaによってすぐに提供されます。

これらの機能を実装したい場合は、それらをサポートするいくつかのオープンソースプロジェクトを見てください。

于 2012-08-03T22:46:19.187 に答える
2

なぜそのようなことをしたいのか、私にはよくわかりません。実際には使用していないのに、プロパティ ファイルにこれらの値が必要なのはなぜですか?

これらの 2 つのパラメーターをカスタム コマンド ライン パラメーター (-D) として渡したい場合は、次のようにすることはできません。

System.getProperty("cloud.db.username");
System.getProperty("cloud.db.password");
于 2012-08-03T22:28:23.963 に答える
1

の値connection1.usernameは常に であり"${cloud.db.username}"、Java はそれを別のプロパティまたは環境変数の値に置き換えません。

このような置換が必要な場合は、それを実装する必要があります (プロパティ オブジェクトの値セット全体を繰り返し処理し、このパターンに一致するすべての値を参照されたプロパティの値に置き換えます)。

于 2012-08-03T22:36:57.733 に答える
0

System.getProperty(...)代わりに経由してアクセスしようとしています

于 2012-08-03T22:28:40.683 に答える