2016-07-22 2 views
12

私は別のプロジェクトを使用するSpringプロジェクトを持っています。各プロジェクトには、独自のバネプロファイルがあり、それぞれのプロファイルに対してapplicationContext.xml*.propertiesを使用してJavaコードから初期化されます。私はargs[]からプロフィールを注入する。 問題は、2番目のプロジェクトがenvのデフォルト設定を使用していることです。applicationContext.xml args[]のenvを2番目のプロジェクトに挿入できないため、Springプロファイルの仕組みを説明する記事を探しました。システム変数からSpringプロファイルを設定するには?

  1. デフォルト値がapplicationContext.xmlに設定されていない場合、プロファイルを表示する階層はありますか。
  2. システム変数がapplicationContext.xmlより強く設定されていますか?
  3. 私の挑戦に最適な解決策は何と思いますか?

この記事の記事や例は、非常に高く評価されます。 ありがとうございます。

答えて

20

あなたのJVMを提供した場合は春のプロファイルは問題はありません。

java -Dspring.profiles.active=development -jar yourApplication.jar 

また春のマニュアルを参照してください。

アクティブな春のプロファイルを設定し

http://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html

69.5

春の環境これにはAPIがありますが、通常は にシステムプロパティー(spring.profiles.active)またはOS環境変数 (SPRING_PROFILES_ACTIVE)を設定します。例えば。

$ます。java -jar -Dspring.profiles.active =生産 デモ-0.0.1-SNAPSHOT.jarに

: -D引数(メインクラスまたはjarアーカイブの前にそれを置くことを忘れないでください)を使用してアプリケーションを起動します

Springブートでは、 application.propertiesにアクティブなプロファイルを設定することもできます。

spring.profiles.active =生産

このように設定値がなくSpringApplicationBuilder.profiles() 法により、システムプロパティまたは環境 変数の設定によって置き換えられます。したがって、後者のJava APIを使用して、デフォルト値を変更せずにプロファイル を追加することができます。

の詳細については、第25章「スプリングブート機能」のセクションを参照してください。

1

私の解決方法は、環境変数をspring.profiles.active=developmentに設定することです。そのマシンで実行されているすべてのアプリケーションが変数を参照し、アプリケーションを起動するようにします。私のwebアプリケーションディレクトリからjava -Dspring.profiles.active=development -jar yourApplication.jarそれはパスが間違っていると述べている:私は、コマンドラインを実行した場合

application.properties 
system properties 
environment variable 
1

を次のように春がプロパティをロードする順番。

spring.profiles.active=mysql 

または

spring.profiles.active=postgres 

または

spring.profiles.active=mongodb 
15

SPRING_PROFILES_ACTIVEは春を選ぶ/上書きする環境変数です:だから、僕は、このようなファイルapplication.propertiesでてmanualyにプロファイルを定義しましたプロフィール

関連する問題