溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Springboot?yml怎么獲取系統(tǒng)環(huán)境變量的值

發(fā)布時(shí)間:2022-02-17 09:18:23 來源:億速云 閱讀:975 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹了Springboot yml怎么獲取系統(tǒng)環(huán)境變量的值的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Springboot yml怎么獲取系統(tǒng)環(huán)境變量的值文章都會(huì)有所收獲,下面我們一起來看看吧。

yml獲取系統(tǒng)環(huán)境變量的值

注意,這里說的是獲取系統(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

Springboot?yml怎么獲取系統(tǒng)環(huán)境變量的值

那么就可以在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;
    } 
}

讀取環(huán)境變量和配置信息的方法

核心的配置文件讀取方式

核心配置文件是指在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;
    }
}

yml的配置文件

對(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è)資訊頻道。

向AI問一下細(xì)節(jié)

免責(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)容。

AI