dev
とtest
の2つのSpringプロファイルがあります。サーバー環境でアクティブなプロファイルを設定します。アプリケーションのどこにでもプロファイルがサーバーのプロファイルに基づいてロードされるように、コードで設定したくありません。どうやってやるの?
次のようにサーバーのシステムプロパティを設定するだけです...
-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
それを行うには、少なくとも2つの方法があります。
web.xmlでコンテキストパラメータを定義します-「すべての環境に1つのパッケージ」ステートメントを壊します。お勧めしません
システムプロパティの定義-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の起動または実行中に自動的にロードされます。
こちらはブログです 上記のソリューションを説明しています。コメントセクションは、詳細について説明しているため興味深いものです。
Eclipseの場合、VM引数に-Dspring.profiles.active
変数を設定するとうまくいきます。
に行く
プロジェクトを右クリック->実行形式->実行構成->引数
-Dspring.profiles.active=dev
をVM引数に追加します
システム環境変数として:
Windows:スタート->「envi」と入力して環境変数を選択し、新しいものを追加します:Name: spring_profiles_active Value: dev
(またはあなたのもの)
Linux: PATHの下の/ etc/environmentに次の行を追加します。
spring_profiles_active=prod
(または任意のプロファイル)
その後、export spring_profiles_active=prod
も実行するので、ランタイムで使用できます。
Tomcat 8の場合:
Linux:
Setenv.shを作成し、次のように更新します。
エクスポートSPRING_PROFILES_ACTIVE = dev
Windows:
Setenv.batを作成し、次のように更新します。
sPRING_PROFILES_ACTIVE = devを設定します