Springboot yml如何獲取系統環境變量的值
yml獲取系統環境變量的值
註意,這裡說的是獲取系統環境變量的值,譬如Windows裡配置的JAVA_HOME之類的,可以直接在Springboot的配置文件中獲取。
我們經常使用一些docker管理平臺,如DaoCloud、rancher之類的,裡面都可以配置環境變量,目的當然也就是供程序獲取。使用環境變量的話,可以避免在application.yml裡直接明文編寫數據庫密碼、appkey之類的。
用法很簡單
譬如我系統環境變量裡,配置的有M2_HOME
那麼就可以在application.yml使用如下
maven: path: ${M2_HOME}
然後在代碼裡就能根據maven.path取到環境變量配置的值瞭。
當然還有一些高級用法,譬如你忘瞭配置環境變量瞭,上面的寫法就取不到值瞭,可以使用
maven: path: ${M2_HOME:abc}
使用冒號分隔,當環境變量中M2_HOME為空時,就會使用abc來填充瞭。
通過上面的方式,就可以做到不明文編碼一些敏感密碼之類的,隻配置在環境變量裡,就能避免所有開發人員看到瞭。
另外加一個小的其他知識,就是如何給static屬性賦初值,之前都知道@Value是可以給普通變量賦值的,那麼static的需要用下面的方式。
@Component public class StaticProperties { public static String CUSTOM_NAME; @Value("${custom.name}") public void setCustomName(String customName) { CUSTOM_NAME = customName; } }
讀取環境變量和配置信息的方法
核心的配置文件讀取方式
核心配置文件是指在resources根目錄下的application.properties或application.yml配置文件,讀取這兩個配置文件的方法有兩種,都比較簡單。
例如,我的application.properties文件中有如下內容:
local.ip=127.0.0.1 local.port=8080
使用Environment方式
@Component public class UserConfig { @Autowired private Environment env; public void show(){ System.out.println("local.ip="+env.getProperty("local.ip")); } }
使用@Value方式(常用)
@Component public class UserConfig { @Value("${local.port}") private String localPort; public void show(){ System.out.println("localPort="+localPort); } }
自定義文件的讀取
有時候,因項目的需要,需要自定義配置文件來存放一些自定義的信息(盡量不破壞核心文件的原生態),比如,我們在
在resources/config目錄下創建配置文件hk.properties
resources/config/hk.properties內容如下:
name=hk sex=1
創建管理配置的實體類:
@Component @PropertySource(value = "classpath:config/hk.properties") public class HKConfig { @Value("${name}") private String name; @Value("${sex}") private String sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
yml的配置文件
對於像如下結構的內容:
jdbc: name:hk password:123
對於這類,獲取方式和上面一樣,jdbc.name即可。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- SpringBoot配置加載,各配置文件優先級對比方式
- SpringBoot框架配置文件路徑設置方式
- springboot默認的5種加載路徑詳解
- SpringBoot如何讀取配置文件中的數據到map和list
- 深入理解springboot中配置文件application.properties