web-dev-qa-db-ja.com

Spring Boot:複数のymlファイルを使用する方法

Spring Bootでは、application.propertiesをapplication.ymlに置き換え、YAML形式を使用できることを知っています。ただし、application.ymlは混雑しているため、少し分割する必要があります。どうやってやるの?私はこのようなことをしたいと思います:

...
@Configuration
@EnableAutoConfiguration
@EnableWebMvc
@EnableScheduling
@PropertySource({"classpath:application.yml", "classpath:scheduling.yml"})
public class ApplicationConfig {
...
22
Johan Frick

@PropertySourceはYAMLをサポートしていません(おそらくSpring 4.1でサポートされます)。 spring.config.locationまたはspring.config.nameをコンマ区切りリストに設定できます(たとえば、システムプロパティまたはコマンドライン引数として)。

個人的に私はすべてのYAMLが同じ場所にあるのが好きです(構造は視覚的にそれを視覚的に分割するのに役立ちます。ファイル内のドキュメントを使用してさらに分割できます)。それはただの味です。

11
Dave Syer
  1. 削除する @PropertySource注釈、必要ない
  2. scheduling.yml into src/main/resources/application-scheduling.yml
  3. 加える src/main/resources/application.ymlファイルの次の行:

    spring.profiles.include: 'scheduling'

30

多くの構成や環境がある場合、通常は次のようにします。

$ cat src/main/resources/application.yml:
spring:
  profiles:
    include: >
      profile1,
      profile2,
      ...
      profileN

$ ls -lah src/main/resources/config:
drwxr-xr-x  4 mak  staff   136B Apr 16 23:58 .
drwxr-xr-x  6 mak  staff   204B Apr 17 01:54 ..
-rw-r--r--  1 mak  staff    60B Apr 16 23:58 application-profile1.yml
-rw-r--r--  1 mak  staff    62B Apr 16 23:16 application-profile2.yml
...
-rw-r--r--  1 mak  staff    50B Apr 16 23:16 application-profileN.yml
8

メインのyamlファイルでアクティブプロファイルの概念を使用できます。例えば:

spring.profiles.active: test

つまり、リソースディレクトリにapplication-test.ymlファイルが必要です。アクティブなプロファイルは、メインyamlファイルの同じ名前のプロパティをオーバーライドすることを考慮してください。

詳細については、以下を参照してください。 http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html

6
Jalal Sajadi

アプリケーションに4つの.ymlファイルが必要だとします。

application.yml
application-dev.yml
application-uat.yml
application-prod.yml

また、ファイルごとに異なる設定を設定する必要があります。

Dev、uat ot prodレベルなどの適切な環境で設定を設定し、application.ymlファイルにプロパティを1つだけ追加する必要があります。

  spring:  
    profiles:
       active: dev
    application: /* optional */
       name: Application Name 
0
Deva