注意,這里說的是獲取系統環境變量的值,譬如Windows里配置的JAVA_HOME之類的,可以直接在Springboot的配置文件中獲取。
我們經常使用一些docker管理平台,如DaoCloud、rancher之類的,里面都可以配置環境變量,目的當然也就是供程序獲取。使用環境變量的話,可以避免在application.yml里直接明文編寫數據庫密碼、appkey之類的。
我主要用在docker容器管理的Daocloud里面,通過環境變量獲取宿主機的ip:端口。
用法很簡單,首先通過docker inspect可以看到容器里有哪些可以直接使用的環境變量
那么就可以在application.properties使用如下
eureka.instance.instance-id=${HOST}:${PORT0}
然后在代碼里就能根據eureka.instance.instance-id取到環境變量配置的值了。
當然還有一些高級用法,譬如你忘了配置環境變量了,上面的寫法就取不到值了,可以使用
mysql.password=${MYSQL_PWD:password123456}
使用冒號分隔,當環境變量中MYSQL_PWD為空時,就會使用password123456來填充了。
通過上面的方式,就可以做到不明文編碼一些敏感密碼之類的,只配置在環境變量里,就能避免所有開發人員看到了。