2017-12-01 9 views
0

だから私は新しい春のアプリケーションを起動し、別の領域に対応するユニークな特性ファイルと一緒に春のプロファイルを使用したいのです:などapplication.propertiesファイルを選択するスプリングプロファイルをプログラムから設定することはできますか?

application-dev.properties、application-live.properties、

ので、私が使用したいプロファイルを決定するために、私が書いた「スタートアップ」機能でいくつかのコードを調べなければなりません。それは基本的に自分のビジネス領域、実行方法などをチェックし、その情報に基づいてアクティブなバネプロファイルを設定します。この部分は正常に動作し、期待どおりに動作します。

私の問題は、一度プロファイルを設定すると、私のカスタムプロファイリングされたアプリケーションからpullが開始されないということです。profile.properties files。代わりに、デフォルト(私が持っている場合)から取得しようとするか、私が試してアクセスしようとしているプロパティに対してnullを返します。これは機能の春ではないですか?ランタイムの前に私のプロファイルを設定して石にする必要がありますか?ここで

は、私は、アクティブなプロファイルを設定しています方法です:

configurableEnvironment.setActiveProfiles("dev"); 

答えて

0

はい、あなたは

ザ・春Environmentは、このためのAPIを持っていますが、通常はあなたの二つの方法でアクティブなプロファイルを設定することができます にシステムプロパティ(spring.profiles.active)またはOS環境 (SPRING_PROFILES_ACTIVE)を設定します。例えば。 、春ブーツで

$ java -jar -Dspring.profiles.active=production demo-0.0.1-SNAPSHOT.jar 

あなたも application.propertiesでアクティブなプロファイルを設定することができます。 -D引数(メインクラスまたはjarアーカイブの前にそれを置くことを忘れないでください)を使用してアプリケーションを起動します例えば

spring.profiles.active=production 

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

出典:https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html#howto-set-active-spring-profiles

+0

だから私は、アクティブなプロファイルを設定することができていますが、問題は、私は打ち上げ後にこれを行うことです。この時点で、ConfigurableEnvironmentは既にプロパティーがロードされており、何らかの理由で新しいプロパティーを取得しません。 – user3761289

関連する問題