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文件中去获取其他位置定义好的值,也可以去获取相关的环境变量。

 

https://www.cnblogs.com/zing8369/p/16576412.html

https://www.jianshu.com/p/f881dc00563a

posted @ 2023-06-27 15:58  wq9  阅读(627)  评论(0)    收藏  举报