yml文件中${xxx_xxx_xxx:xxxxx}的含义
yml文件中${XXX_XXX_XXX:XXXXX}的含义
最近在学习gitee开源项目dcy-fast-cloud,发现其中的yml文件的连接地址都采用下面这种形式,因为是第一次遇到,特此记录下来,以供以后学习。
spring:
redis:
host: ${REDIS_HOST:dcy-fast-redis}
port: ${REDIS_PORT:6379}
database: 6
logstash:
host: ${LOGSTACH_HOST:dcy-fast-logstash}:${LOGSTACH_PORT:5044}
以前直接写地址和端口的地方用${REDIS_HOST:dcy-fast-redis}
和${LOGSTACH_PORT:5044}
这种表达方式替代,其中${REDIS_HOST:dcy-fast-redis}
其实就是表示redis的host地址从配置文件或者启动命令中读取REDIS_HOST
的值,如果命令行中没有该值,那么dcy-fast-redis
就是默认值。
这样用的意义在于项目移植到新的环境运行时,不再需要修改配置文件,可在启动命令行运行需要的指定值就可以了。例如:
java -jar -REDIS_HOST=127.0.0.1 XXX.jar
这样,项目运行的redis.host地址自动加载到127.0.0.1。
其中,也可以在C:\Windows\System32\drivers\etc
路径下修改host文件,添加127.0.0.1 dcy-fast-redis
配置,那么默认路径也会修改到127.0.0.1。
yml | ${}的用法
yml文件配置如下:
spring: datasource: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy url: jdbc:log4jdbc:mysql://${DB_HOST:***}:${DB_PORT:***}/${DB_NAME:***}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false username: ${DB_USER:root} password: ${DB_PWD:***} redis: #数据库索引 database: ${REDIS_DB:**} host: ${REDIS_HOST:**} port: ${REDIS_PORT:**} password: ${REDIS_PWD:**} #连接超时时间 timeout: 5000
${key:default_value}
这种表达方式是通过key来获取value,如果获取不到就使用后面默认值。
使用场景:
一些直接通过Jar包启动时,可以在启动时手动配置相关参数,如果没有配置,也会自动获取默认值进行启动,如
java -jar -DREDIS_HOST=172.16.0.36 -DREDIS_DB=2 xxx.jar
当然,${}这种形式本来也可以用来获取值,比如在本yml文件中去获取其他位置定义好的值,也可以去获取相关的环境变量。
个人学习笔记,记录日常学习,便于查阅及加深,仅为方便个人使用。