2016-04-08 25 views
1

Gitの外部設定から複数のプロファイルを追加する方法:春ブーツ+春クラウドコンフィグ - 私は春のブートアプリケーションにこの設定を持っている

spring: 
    application: 
    name: my-app 
    profiles: 
    active: ${ENVIRONMENT} 
    cloud: 
    config: 
    uri: http://localhost:8888 

私のconfigサーバは、次のファイルを読み込み、私のアプリ-dev.yaml

prop: dev property 

私のアプリ-pro.yaml

prop: pro property. 

私は春のブートアプリケーション設定-DENVIRONMENT=devを起動し、devの外部Gitプロパティを正しく読み込みます。

私は環境を注入するときにコントローラーと言うと、env.getActiveProfiles()は "dev"を期待どおりに取得します。

git設定からさらにプロファイルを追加したいと思います。例えば:

prop: dev property 
spring: 
    active: 
    profiles: dev,business1 

私のアプリ-pro.yaml

私のアプリ-dev.yaml

prop: dev property 
spring: 
    active: 
    profiles: pro,business2 

だからenv.getActiveProfiles()戻り["dev","business1"]。しかしそれが返すものは、最初の"dev"です。

どうすればいいですか?

UPDATE:

デイブSyerによって示唆されるように私はGitのファイルでspring.profiles.includeを使用してみましたが、新しいプロファイルが環境に追加されません。

私のアプリ-dev.yaml

prop: dev property 
spring: 
    profiles: 
    include: business1 

私のアプリ-pro.yaml

prop: dev property 
spring: 
    profiles: 
    include: business2 

environment.getActiveProfiles() ---> "dev"

+1

のバグであると信じて、アクティブなプロファイルとして

[business1, dev]プロファイルを得たあなたは 'spring.profiles.include'ます(httpてみました://をdocs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-adding-active-profiles)? –

+0

@DaveSyer、私は試しましたが、注入された 'Environment.getActiveProfiles()'は元の '$ {ENVIRONMENT}'(dev)プロファイルのみを返します。 – codependent

+0

これをテストする方法はわかりませんが、期待どおりに動作します。わかりやすくするために、リモート設定ファイルを編集してクライアントアプリケーションのアクティブなプロファイルを変更することはできませんが、設定サーバーにロードされているコンテンツを変更することができます(私はあなたが望んだと思った)。したがって、/ my-app/devをロードすると、結果に 'my-app-business1.yml'の設定が表示されます。 –

答えて

0

1.5.4へのあなたの春ブートを更新します。

Macで同じケースをテストしたところ、異なるバージョンの春の動作が異なることがわかりました。私はとき

私は春のクラウドBrixton.SR7と春ブーツ1.3.8.RELEASEを使用していて、私は(も春ブーツ1.4.5.RELEASEで)アクティブなプロファイルとして

[dev]プロファイルを得ましたSpring Cloud DalstonでSpringブート1.5.4.RELEASEを使用します。SR1、私はだから私はそれが春ブーツの1.3.xと1.4.xの

+0

うん、アップグレード後、今、私に知らせてくれてありがとう! – codependent

関連する問題