問題タブ [spring-profiles]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
3245 参照

spring - 特定のプロファイルでスプリング コンテキストをインポートする

私の java-spring-maven Web アプリケーションでは、複数のスプリング コンテキスト (プロジェクトごとに 1 つのコンテキスト) を使用しています。簡単にするために、2 つのスプリング コンテキスト a.xml と b.xml があり、それぞれがプロジェクト A とプロジェクト B に属し、A が B に依存しているとします。

a.xml は、次のように b.xml をインポートしています。

したがって、a.xml をロードすると、b.xml もロードされます。

現在、私のシステムには 2 つのスプリング プロファイルがあります。コンテキストで使用される te​​stとproductionです (プロファイルごとに異なるプロパティ プレース ホルダーをロードします)。

だから私は得たa.xmlで:

そして、b.xml での同じ規則 (異なるプロパティ ファイルのみをロードする)。プロパティ ファイルは src/main/resources (運用ファイル) と src/test/resources (テスト ファイル) の下にあります。

これで、次のような単体テストができました。

この場合、a.xml は「テスト」プロファイルにロードされ、期待どおりに目的のファイルがロードされます (test-props-for-a)。b.xml は a.xml によってインポートされますが、b.xml からロードされたプロパティ ファイルのプロパティ値が挿入されないという奇妙な経験が発生しました。

たとえば、プロパティ ファイルに次のプロパティがあるとします。

そして私のクラスで私は得ました:

connectionIP の値は、「1.2.3.4」ではなく「${connection-ip}」になります。

ファイルの場所が で始まりclasspath*、* が含まれていないことに注意してください。FileNotFoundException が発生します。

明確にするために、ファイル test-props-for-b.properties はプロジェクト B の src/test/resources の下にあります。なぜこれを取得するのですか?

b.xml を直接 (a.xml 経由でインポートせずに) ロードするテストを実行すると、正常に動作し、ファイル test-props-for-b.properties のテスト プロパティが期待どおりにロードされます。

私は何か間違ったことをしていますか?これはバグでしょうか?もしそうなら、回避策を提案できますか?

アップデート

プロパティ ファイル (test-props-for-b.properties) へのパスからスター (*) を削除し、Spring コードをデバッグしました。クラス ClassPathResource では、このメソッドは例外をスローします。

変数の値は次のとおりです。

this.clazz はヌルです。this.path はファイル名 test-props-for-b.properties を保持します

そして、このコマンドは null を返します。

this.classLoader.getResourceAsStream(this.path);

何故ですか?プロジェクト B の src/test/resources の下にファイルがはっきりと表示されます。

0 投票する
1 に答える
2613 参照

java - Spring でプロパティ プレースホルダー メカニズムを更新する

コンテキスト xml ファイルと、メカニズムSpringによって作成された特定の Bean があります。PropertyPlaceholderConfigurer私の問題は次のとおりです。アプリケーションが関連するプロパティ ファイルの変更を行っていて、アプリケーションを再起動したくない場合。アプリケーションを再起動せずに関連する Bean をリロードしたい。

私の目標に最適なソリューションは何ですか?

0 投票する
1 に答える
948 参照

spring - Spring プロファイルを使用して util:properties をロードすると、ID が複数発生する

Spring(3.1) プロファイルを使用して、プロパティ ファイルを util:properties にロードしています。

そして、ランタイム パラメータ (TC サーバーで実行) を介してプロファイルを呼び出します。-Dspring.profiles.active=local

しかし、私はエラーが発生しますThere are multiple occurrences of ID value 'myProps'

これは以前は他の Bean 定義で実行されていましたutil:propertiesが、追加するとエラーが発生します。

0 投票する
2 に答える
257 参照

spring - Spring Profile 条件付き小道具ファイル 複数環境

Spring Profiles について質問があります。環境ごとに別のアーティファクトが必要になるため、maven プロファイルを使用しない理由を理解しています。それ以来です。Spring Profile を使用するようにコードを変更しましたが、Spring Profiles の問題は、サーバー上に環境ごとに database.property ファイルが必要なことです。私はこのセットアップを持っています。誰もが何百回も見たのと同じセットアップです。

このセットアップで私が考える問題は、各サーバーがenvディレクトリにすべてのファイルを持っていることです(つまり、devはそのサーバーにprod.db.propertiesとtest.db.propertiesファイルを持っています)。プロファイルを使用せずに、maven のビルド中に必要なファイルのみをコピーする方法はありますか? 私は方法を理解することができませんでした。その場合、これは maven プロファイルを使用する理由のように思えます。私は何かを逃したかもしれません。どんな考えでも大歓迎です。

0 投票する
3 に答える
5254 参照

spring - Spring Java 構成とプロパティ プレースホルダーの解決

PropertySourcesPlaceholderConfigurer Bean を明示的に宣言しない場合に、Spring がプロパティ プレースホルダーを解決する方法に頭を悩ませようとしています。注釈を介してJavaを介してSpringを構成する既存のプロジェクトのソースを調べます。. .

春のコンテキストxmlで:

残りのアプリと構成をブートストラップするJavaファイルで

それはすべて非常に巧妙ですが、私の人生では、環境変数に対して ${...} プロパティのプレースホルダー構文を評価するようにSpringに指示するものを理解できません。春のドキュメントで答えを見つけることができませんでしたが、春はこれを行うためにPropertySourcesPlaceholderConfigurerクラスに依存していることを理解しています。このクラスがいつ/どのように暗黙的に呼び出されるかについては、何もわかりません。@Configuration アノテーションによるものですか、それともスプリング ブートストラップ プロセスの別の部分ですか?

これは理解するのに最も適切なことではないことはわかっていますが、「春の魔法」として何かを書き留めるのは嫌いです. これについての洞察は素晴らしいでしょう!