0%

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传入系统环境变量;