springboot利用系统变量和配置文件实现灵活配置


静态方式

直接在bootstrap.yml或者application.yml中写死;

spring:
  #mysql数据配置
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: 123456
    url: jdbc:mysql://192.168.41.128:3306/gw?useUnicode=true&characterEncoding=utf8&useSSL=false

缺点是参数需要改变时,需要重新改写配置,再打包。特别docker部署时,环境变化了,配置改动麻烦。

解决办法

yml文件中,通过${Envirment_variable}的方式可以获取系统环境变量中的值;如上面的配置改写成:

spring:
  #mysql数据配置
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    username: ${USER_NAME:root}
    password: ${PASSWORD:123456}
    url: jdbc:mysql://${IP:192.168.41.128:3306}/gw?useUnicode=true&characterEncoding=utf8&useSSL=false

以上配置,优先设置系统环境变量(USER_NAME、PASSWORD、IP)的值,如果没有,才会使用默认值。

docker部署传入环境变量

  • 通过-e可以传入环境变量;
  • docker-compose可以通过environment传入系统环境变量;

文章作者: wuzhiyong
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 wuzhiyong !
评论
 上一篇
logback关闭启动时自身调试信息打印 logback关闭启动时自身调试信息打印
问题描述使用logback打印日志,启动服务时logback会打印一些自身的调试信息如下,会打印它检查了哪些配置、看见了哪些配置: 18:00:22,729 |-INFO in ch.qos.logback.classic.LoggerCo
2020-04-01
下一篇 
flinkSQL-client初体验 flinkSQL-client初体验
概述本章创建一个模拟数据源将模拟数据源源不断写到kafka中,然后使用Flink SQL client查询kafka中的数据。 模拟数据由java对象序列化而成的json格式字符串,包含book的id、type、price和时间。 Book
2020-03-26
  目录