web-dev-qa-db-ja.com

スプリングプロファイル変数の設定

devtestの2つのSpringプロファイルがあります。サーバー環境でアクティブなプロファイルを設定します。アプリケーションのどこにでもプロファイルがサーバーのプロファイルに基づいてロードされるように、コードで設定したくありません。どうやってやるの?

58
Maheshwaran K

次のようにサーバーのシステムプロパティを設定するだけです...

-Dspring.profiles.active=test

編集:これをEclipseのTomcatに追加するには、Run -> Run Configurationsを選択し、Tomcat実行構成を選択します。 Argumentsタブをクリックし、VM argumentsの最後に-Dspring.profiles.active = testを追加します。別の方法は、Serversプロジェクトのcatalina.propertiesにプロパティを追加することですが、そこに追加する場合は-Dを省略します

編集:Spring Bootで使用する場合、追加の選択肢があります。プロパティに2つのダッシュを付加すると、プロパティをプログラム引数として渡すことができます。

Spring Boot実行可能jarファイルを使用した2つの例を次に示します...

システムプロパティ

[user@Host ~]$ Java -jar -Dspring.profiles.active=test myproject.jar

プログラム引数

[user@Host ~]$ Java -jar myproject.jar --spring.profiles.active=test
99
hyness

それを行うには、少なくとも2つの方法があります。

  1. web.xmlでコンテキストパラメータを定義します-「すべての環境に1つのパッケージ」ステートメントを壊します。お勧めしません

  2. システムプロパティの定義-Dspring.profiles.active=your-active-profile

システムプロパティを定義する方がはるかに優れたアプローチだと思います。では、Tomcatのシステムプロパティを定義する方法は?インターネットでは、「modify catalina.sh」のような多くのアドバイスを見つけることができました。そのようなことを行うための設定ファイルが見つからないからです。 catalina.shの変更は、メンテナンス不能な汚い解決策です。それを行うより良い方法があります。

Tomcatのbinディレクトリにコンテンツを含むファイルsetenv.shを作成するだけです:

Java_OPTS="$Java_OPTS -Dspring.profiles.active=dev"

catalina.shの起動または実行中に自動的にロードされます。

こちらはブログです 上記のソリューションを説明しています。コメントセクションは、詳細について説明しているため興味深いものです。

25
Nilesh

Eclipseの場合、VM引数に-Dspring.profiles.active変数を設定するとうまくいきます。

に行く

プロジェクトを右クリック->実行形式->実行構成->引数

-Dspring.profiles.active=devVM引数に追加します

4
Abdullah Khan

システム環境変数として:

Windows:スタート->「envi」と入力して環境変数を選択し、新しいものを追加します:Name: spring_profiles_active Value: dev(またはあなたのもの)

Linux: PATHの下の/ etc/environmentに次の行を追加します。

spring_profiles_active=prod(または任意のプロファイル)

その後、export spring_profiles_active=prodも実行するので、ランタイムで使用できます。

3
R.S

Tomcat 8の場合:

Linux:

Setenv.shを作成し、次のように更新します。

エクスポートSPRING_PROFILES_ACTIVE = dev

Windows:

Setenv.batを作成し、次のように更新します。

sPRING_PROFILES_ACTIVE = devを設定します

3
Ram Pratap