您好,登錄后才能下訂單哦!
這篇文章主要介紹了Springboot yml怎么獲取系統(tǒng)環(huán)境變量的值的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Springboot yml怎么獲取系統(tǒng)環(huán)境變量的值文章都會(huì)有所收獲,下面我們一起來看看吧。
注意,這里說的是獲取系統(tǒng)環(huán)境變量的值,譬如Windows里配置的JAVA_HOME之類的,可以直接在Springboot的配置文件中獲取。
我們經(jīng)常使用一些docker管理平臺(tái),如DaoCloud、rancher之類的,里面都可以配置環(huán)境變量,目的當(dāng)然也就是供程序獲取。使用環(huán)境變量的話,可以避免在application.yml里直接明文編寫數(shù)據(jù)庫密碼、appkey之類的。
譬如我系統(tǒng)環(huán)境變量里,配置的有M2_HOME
那么就可以在application.yml使用如下
maven: path: ${M2_HOME}
然后在代碼里就能根據(jù)maven.path取到環(huán)境變量配置的值了。
當(dāng)然還有一些高級(jí)用法,譬如你忘了配置環(huán)境變量了,上面的寫法就取不到值了,可以使用
maven: path: ${M2_HOME:abc}
使用冒號(hào)分隔,當(dāng)環(huán)境變量中M2_HOME為空時(shí),就會(huì)使用abc來填充了。
通過上面的方式,就可以做到不明文編碼一些敏感密碼之類的,只配置在環(huán)境變量里,就能避免所有開發(fā)人員看到了。
另外加一個(gè)小的其他知識(shí),就是如何給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配置文件,讀取這兩個(gè)配置文件的方法有兩種,都比較簡單。
例如,我的application.properties文件中有如下內(nèi)容:
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); } }
自定義文件的讀取
有時(shí)候,因項(xiàng)目的需要,需要自定義配置文件來存放一些自定義的信息(盡量不破壞核心文件的原生態(tài)),比如,我們?cè)?/p>
在resources/config目錄下創(chuàng)建配置文件hk.properties
resources/config/hk.properties內(nèi)容如下:
name=hk sex=1
創(chuàng)建管理配置的實(shí)體類:
@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; } }
對(duì)于像如下結(jié)構(gòu)的內(nèi)容:
jdbc: name:hk password:123
對(duì)于這類,獲取方式和上面一樣,jdbc.name即可。
關(guān)于“Springboot yml怎么獲取系統(tǒng)環(huán)境變量的值”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“Springboot yml怎么獲取系統(tǒng)環(huán)境變量的值”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。