SpringBoot中application.yaml如何设置配置项默认值一直困扰了我很久,官方文档也没有写如何设置默认值,今天有时间研究了下,发现只要加个冒号就可以了,如${配置名:默认值}.

application.yml

1
2
3
appconfig:
fileServerAccessKey: ${FILE_SERVER_ACCESS_KEY:default_access_key}
...

配置文件类

1
2
3
4
5
6
@Component
@ConfigurationProperties(prefix = "appconfig")
class Config {
String fileServerSecretKey
...
}

如果项目未设置FILE_SERVER_ACCESS_KEY环境变量,则fileServerSecretKey字段会以default_access_key为默认值.

研究了下源码发现 PropertyPlaceholderHelper.java#L147这个类先会检查配置值中是否包含valueSeparator这个字符串,如果有,则会用valueSeparator来分割字符,从中取出默认值,而valueSeparator默认值就是:.