Spring Bootでは、application.propertiesをapplication.ymlに置き換え、YAML形式を使用できることを知っています。ただし、application.ymlは混雑しているため、少し分割する必要があります。どうやってやるの?私はこのようなことをしたいと思います:
...
@Configuration
@EnableAutoConfiguration
@EnableWebMvc
@EnableScheduling
@PropertySource({"classpath:application.yml", "classpath:scheduling.yml"})
public class ApplicationConfig {
...
@PropertySource
はYAMLをサポートしていません(おそらくSpring 4.1でサポートされます)。 spring.config.location
またはspring.config.name
をコンマ区切りリストに設定できます(たとえば、システムプロパティまたはコマンドライン引数として)。
個人的に私はすべてのYAMLが同じ場所にあるのが好きです(構造は視覚的にそれを視覚的に分割するのに役立ちます。ファイル内のドキュメントを使用してさらに分割できます)。それはただの味です。
@PropertySource
注釈、必要ないscheduling.yml
into src/main/resources/application-scheduling.yml
加える src/main/resources/application.yml
ファイルの次の行:
spring.profiles.include: 'scheduling'
多くの構成や環境がある場合、通常は次のようにします。
$ 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
メインのyamlファイルでアクティブプロファイルの概念を使用できます。例えば:
spring.profiles.active: test
つまり、リソースディレクトリにapplication-test.yml
ファイルが必要です。アクティブなプロファイルは、メインyamlファイルの同じ名前のプロパティをオーバーライドすることを考慮してください。
詳細については、以下を参照してください。 http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html
アプリケーションに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