5

次のエントリで application.properties ファイルを使用してプロファイルを設定したいと思います。

mode=master

context.xml ファイルで spring.profiles.active を設定するには? init-param は、web.xml コンテキストでのみ機能します。

<init-param> 
    <param-name>spring.profiles.active</param-name>
    <param-value>"${mode}"</param-value>
</init-param>
4

3 に答える 3

8

アクティブなプロファイルを変更する方法はいくつかありますが、プロパティ ファイルから直接取得する方法はありません。

  • 質問で行っているようにを使用でき<init-param>ます。
  • アプリケーションの起動時にシステム パラメータを指定できます -Dspring.profiles.active="master"
  • ConfigurableEnvironmentからプログラムでApplicationContext取得できますsetActiveProfiles(String...)context.getEnvironment().setActiveProfiles("container");

を使用しApplicationListenerて、コンテキストの初期化をリッスンできます。その方法についてはこちらで説明しています。あなたが使用することができますContextStartedEvent

ContextStartedEvent event = ...; // from method argument
ConfigurableEnvironment env = (ConfigurableEnvironment) event.getApplicationContext().getEnvironment();
env.setActiveProfiles("master");

"master"必要に応じてプロパティ ファイルから値を取得できます。

于 2013-09-04T13:39:13.490 に答える
3

環境変数、システム変数 (JVM またはアプリケーションの -D オプション) を使用するか、JNDI (java:comp/env/) に入れることができます。ただし、プロパティ ファイルに入れることはできません。特定のプロパティ ファイルが読み込まれます。

@Profile javadocsに詳細情報があります。

別の解決策は、特定のファイルを読み取り、特定のプロファイルをアクティブ化する独自のApplicationContextInitializer実装を作成することです。

于 2013-09-04T13:31:41.367 に答える