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"
のバグであると信じて、アクティブなプロファイルとして
を
[business1, dev]
プロファイルを得たあなたは 'spring.profiles.include'ます(httpてみました://をdocs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-adding-active-profiles)? –@DaveSyer、私は試しましたが、注入された 'Environment.getActiveProfiles()'は元の '$ {ENVIRONMENT}'(dev)プロファイルのみを返します。 – codependent
これをテストする方法はわかりませんが、期待どおりに動作します。わかりやすくするために、リモート設定ファイルを編集してクライアントアプリケーションのアクティブなプロファイルを変更することはできませんが、設定サーバーにロードされているコンテンツを変更することができます(私はあなたが望んだと思った)。したがって、/ my-app/devをロードすると、結果に 'my-app-business1.yml'の設定が表示されます。 –