yml mysql参数_yml配置--给参数设置默认值
yml配置--给参数设置默认值
在学习eladmin的时候,application-dev.yml中有配置使用了${DB_HOST:localhost},表示是取值。
先在主application.yml配置文件中或者命令行中找键值,若是存在则赋值,若是不存在则使用默认的值。
背景
今天看了一下pig项目,对其中的 user: ${MYSQL-USER:root} 这种写法感到有些陌生,所以本着多学点东西的想法去一探究竟。
db:
num: 1
user: ${MYSQL-USER:root}
password: ${MYSQL-PWD:root}
url:
0: jdbc:mysql://${MYSQL_HOST:pigx-mysql}:${MYSQL_PORT:3306}/${MYSQL_DB:pigxx_config}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
123456
解释
${}这种写法很明显是取值,从一个已经定义好的配置文件中,根据key取出value,在spring开发中很常见, 以\user: ${MYSQL-USER:root}为例,它代表的意思是代码里先从配置文件(springboot的yml配置或者命令行指定)去找key是MYSQL-USER的值,把它的值赋值给user,如果该参数不存在,则就把root赋值给user。
注意:如果没找到MYSQL-USER 配置,同时又没给一个默认值,则会启动就会报错的!!!!所以为了保险起见给个默认值
这种取值的方式和@Value注解取值是一样的
//yml配置
province:
city: xxx
//java中取值最好也写上默认值
@Value("${province.city:beijing}")
public String city;
1234567
总结
为什么要这样写,我想到的一点是方便以后修改配置,比如环境移植,换一个新的环境我只需要修改yml配置,或者干脆就在命令行修改。
java -jar -DMYSQL-USER=zs xxx.jar