つまり、3つのyml
ファイルがあります。
application-default.yml
->デフォルトのプロパティ、すべてのプロファイルで使用できる必要がありますapplication-dev.yml
->開発プロファイルのみのプロパティapplication-prod.yml
->製品プロファイルのみのプロパティ-Dspring.profiles.active=dev
を渡してブートアプリケーションを起動すると、application-dev.yml
固有のプロパティにアクセスできます。しかし、application-default.yml
ファイルで定義されているプロパティを取得できません。以下は私のapplication-dev.yml
ファイルです。
Spring:
profiles:
include: default
spring.profiles: dev
prop:
key:value
私は私の問題を解決することができました、これが私がしたことです。
Application-common.ymlファイルを作成し、そこに共通プロパティを配置します。次に、application- {env} .ymlファイルでこれを上に配置します。
spring:
profiles:
include: default
特にデフォルトのプロファイルをロードする必要がないので、これでうまくいきます!!!
TL; DR
application-default.ymlファイルの名前をapplication.ymlに変更し、期待どおりに動作します。
説明
ドキュメントの説明 によると、アプリケーションを実行するとapplication- {suffix} .ymlというファイルがアクティブになります名前がサフィックスと一致するプロファイルを使用します。さらに、メインapplication.ymlはデフォルトでロードされるため、すべてのプロファイルに共通のプロパティを配置するのに最適な場所です。あるいは、ファイルの名前をapplication-default.ymlとして保持する場合は、Spring Bootアプリケーションに2つのプロファイルを渡すことができます。
-Dspring.profiles.active=default,dev
これにより、2つのプロファイルがアクティブになり、両方のプロパティファイルが読み込まれます。
私がしていることは:
一般的な設定をapplication.xml
、およびこのファイルに以下を追加します。
spring:
profiles:
active: dev, pro, xxx...
アクティブ化するすべてのプロファイル。
このファイルを編集して環境を切り替えるだけです。
外部ファイルが進行するので、別のapplication.xml
WARの外で、このファイルを毎回編集する代わりに、dev
/pro
/...環境をアクティブ化します。必ずドキュメントを確認してください:
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html