本文目錄一覽:
springboot中獲取apollo或者nacos里的配置文件
常規的,在springboot中一般只需要拿appolo或者nacos里配置的屬性就夠了。
但是也有一些很特殊的場景,要拿到appolo或者nacos里配置的文件,比如有個第三方jar包提供的方法中,要求把properties配置文件路徑傳進去來初始化第三方jar包里需要用到的東西,這時候一般是把properties文件配置到appolo或者nacos里,但是如何直接拿到這個properties文件而不是裡面的屬性值呢?
apollo里直接提供了把配置的相應namespace直接轉換成file的方法:
再把這個content轉換成輸入流就可以用了
如果只是想拿到裡面某個namespace的屬性,則可以:
key為屬性key名,c.getPropertyNames()方法能拿到該namespace下面的所有屬性,返回一個SetString集合,再遍歷這個集合就能拿到所有屬性。
nacos跟apollo的處理思路有點不一樣,找了很多資料,貌似沒有找到nacos里直接獲取整個獲取配置文件的方法,後面如果有同學找到了這個方法記得留言提醒我。
nacos在springboot啟動的時候已經把所有配置文件都注入到了spring里。
第一種:可以直接用註解 @Value(“${key}”)來獲取配置好的屬性值
第二種:在java里獲取:
新建SpringContextUtil實現org.springframework.context.ApplicationContextAware這個介面:
在啟動類用註解導入該類:@Import({SpringContextUtil.class})
利用org.springframework.core.env.Environment類來直接獲取屬性:
如果有這樣一個需求,有個第三方的jar包要求初始化配置好的properties文件,只給了properties文件的路徑傳參,只能用文件路徑的方式初始化這個第三方jar包,那麼我們就必須保證項目里或者其他文件夾有這個properties文件才可以,而這些配置如果經常要變的話,最好也是配置在nacos或者apollo,如此看來,apollo是可以直接把配置的相應namespace直接轉換成file,而nacos大概只能把所有屬性手工生成一個新的properties文件來保存到本地了。
這個生成文件的過程,要在springboot啟動之後立即執行:
那我們就要建一個配置類實現org.springframework.beans.factory.InitializingBean這個介面,重寫afterPropertiesSet()方法:把需要啟動後執行的邏輯放在裡面,下面是一個示例:
把這個類在啟動類里注入:
如此,在啟動的時候就可以在本地生成一個cssconfig.properties文件了。
於是乎就可以類似這樣調用第三方介面(根據第三方jar包來定):
Apache Apollo java環境詳細怎麼設置
在Element下的列表框中選擇你要更改的內容。
列表框中有三個大類,Java、Javadoc、Comments。
如果感覺不知道如Strings、Classes等怎樣設置色彩值才能和Visual
Studio中的色彩值相同,可以參考打開Visual
Studio中通過選擇菜單「工具–選項–環境–字體和顏色」的方式查看Studio中對應類型的色彩方案進行設置。
apollo獲取配置
當應用使用下面的語句獲取配置時,我們稱之為獲取應用自身的配置,也就是應用自身的application namespace的配置。
對這種情況的配置獲取規則,簡而言之如下:
所以如果應用部署在A數據中心,但是用戶沒有在Apollo創建cluster,那麼獲取的配置就是默認cluster(default)的。
如果應用部署在A數據中心,同時在運行時指定了SomeCluster,但是沒有在Apollo創建cluster,那麼獲取的配置就是A數據中心cluster的配置,如果A數據中心cluster沒有配置的話,那麼獲取的配置就是默認cluster(default)的。
以FX.Hermes.Producer為例,hermes producer是hermes發布的公共組件。當使用下面的語句獲取配置時,我們稱之為獲取公共組件的配置。
對這種情況的配置獲取規則,簡而言之如下:
前面提到了Apollo客戶端和服務端保持了一個長連接,從而能第一時間獲得配置更新的推送。長連接實際上我們是通過Http Long Polling實現的,具體而言:
考慮到會有數萬客戶端向服務端發起長連,在服務端我們使用了async servlet(Spring DeferredResult)來服務Http Long Polling請求。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/190093.html