理解Spring Boot的配置文件
基本上,这里大致写着内容,但由于难度较高,我会进行总结。
无论使用 YAML 进行描述,其在内部都会转换为 Java Properties。
由于Spring Boot在内部使用Java Properties进行保持,因此最终表达形式将基于Java Properties。
以下两者都是YAML,从YAML的角度来看,它们的意义完全不同,但在Spring Boot的配置文件中,它们将得到相同的结果。
myapp:
value: hello
myapp.value: hello
当想要同时设置 spring.profiles 和 spring.profiles.include 的常见情况时,可以按照以下方式进行记录
---
spring.profiles: dev
spring:
profiles:
include:
- local-db
只有一次加载 spring.profiles.active
只有当spring.profiles.active未定义时,才会加载该配置文件中的配置。
如果按照下面的方式指定,可以加载包含的配置文件中的bar配置文件,但是这样做没有特别的意义,只会使得配置更加混乱和难以理解,所以最好只在applicaiton.yml和application-default.yml中指定active。
---
spring.profiles: default
spring.profiles.include:
- foo
---
spring.profiles: foo
spring.profiles.active: bar
配置文件可以像标签一样使用。
spring.profile.active 可以设置多个配置。此外,不需要存在与之对应的配置文件。通过使用这个功能,可以将数据库等设置分离到不同的配置文件中,并通过添加这些配置文件的 profile 到 active 或 include 中进行切换。
例如,如果想要在本地运行用于测试的数据库,而在CI上运行时使用特定的数据库,可以按以下方式进行描述:
---
spring.profiles: default
spring.profiles.active: test
---
spring.profiles: test
spring:
datasource:
# local db settings
---
spring.profiles: ci
spring.profiles.include:
- ci-db
---
spring.profiles: ci-db
spring:
datasource:
# ci db settings
通过在 CI 任务中指定 SPRING_PROFILES_ACTIVE=test,ci,可以将连接的数据库更改为 CI 专用的数据库。
在上述情况中,test、ci、ci-db 会被加载为 Spring Boot 的配置文件。
通过这样的描述方式,加载的配置文件可以通过 @Profile 注解等进行指定,可以进行精细切换。
在logback-spring.xml文件中,可以使用springProfile标签来根据不同的环境来改变目录和appender的设置,因此非常适用。