1. 程式人生 > 程式設計 >SpringCloud Config使用本地倉庫及map注入

SpringCloud Config使用本地倉庫及map注入

預設情況下,SpringCloud Config使用的是遠端的倉庫,所以預設要配置uri

如果不想使用遠端倉庫,而使用本地倉庫,需要做以下配置:

spring.profiles.active=native

spring.cloud.config.server.native.search-locations=file:D:/git/myconfig

注意3點:

1. 使用spring.profiles.active指定要使用本地倉庫,而不是其他屬性.注意這個屬性一般的作用是啟用哪一套配置,在config專案中用於指定是否使用本地倉庫

2. 不在使用uri,username,password這些遠端倉庫才需要的,而是使用search-locations這個用於指定尋找本地資料夾的屬性

3. 倉庫路徑前一定要帶上file:字首,否則識別不了

4. 客戶端程式不用再像遠端那樣指定使用倉庫哪個分支,即: spring.cloud.config.label無效了,無論是否配置該屬性,都不再使用該屬性.

總結:

1. 通過在config專案中指定spring.profiles.active=native來指定使用本地配置倉庫

2. 指定配置路徑時,前面要加上file:

3. 不需要再指定uri,password,label這些屬性

今天偶然在網頁留言上發現,有人說用@Autowired

可以注入bean到宣告的map中,當時我還不信,怎麼可能呢,@Autowired只用過向定義的型別中注入bean,map跟bean非親非故,怎麼會注入那些例項,於是試驗了一下,果然靈驗

@Autowired
private Map<String,BizService> map = new HashMap<>();// 向map中注入所有型別為BizService型別的bean,其中鍵為bean的名稱,值為bean的例項.

像上面這些注入一個map,型別必須是這樣: Map<String,T> map,即: 鍵必須是String型別,值可以是任意型別

這樣的話,這個map就會將context中所有型別為T的bean都注入到這個map中了.

分析一下原理,也是很容易實現的,只不過以前沒朝這方面想而已

在context啟動過程中,會載入所有的bean到bean工廠中,如果發現有用@Autowired標記的Map型別,那就注入

注入的時候,看map的值型別,然後遍歷所有的bean,根據型別放進去就行了.

有了這個東西,以後遇到自定義的bean,都可以自動放入單獨的map中,隨時供自己呼叫和處理了,很是方便.

同理: List也可以根據bean的型別自動注入.原理同map.

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。