利用设置环境变量,可以实现springboot在配置文件中加载动态值,配置文件中读取环境变量值的写法 ${环境变量名: 默认值} ,在双引号""中 也能生效
例如
在springboot启动加载的配置文件application.properties 中
testenv=${myenv:a default value}
测试类TestController
@RestController
public class TestController {
@Value("${testenv}")
String test;
@RequestMapping("/test")
public String test(){
return "" + test;
}
}
这时我还没有在系统环境变量中设置myenv,启动测试程序看到的现象是
浏览器输入 127.0.0.1:8080/test ,页面打印内容是默认值 a default value
在系统环境变量中新增环境变量 myenv 值为 123456
过程:右键我的电脑->属性->高级系统设置->环境变量->新建系统变量名myenv,值123456
重启开发的idea或eclipse 启动程序,再次浏览器输入 127.0.0.1:8080/test ,页面打印内容是环境变量中设置的值 123456
实际项目部署中的应用:
现在的微服务项目部署基本都是采用容器docker来部署,docker启动服务编排工具中我们可以很方便的设置环境达到动态设置项目加载动态配置。
例如,在Dokcerfile中可以用ENV 命令设置镜像中的环境变量
FROM openjdk:8
MAINTAINER xxx
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
ENV mysqlIp xxx.xxx.xx.xxx
ENV mysqlPort 3306
ENV mysqlUsername root
ENV mysqlPassword 123456
EXPOSE xxx
CMD xxx