跟我一起学.NetCore之自定义配置源-热更新-对象绑定
前言
上一篇針對不同的配置源進行舉例演示,感受到不同配置源和不同數據格式使用統一操作的便捷(即沒有什么加一層解決不了的,這個不是我說的),這里接著說說自定義配置源、配置熱更新、配置綁定對象相關操作;
配置源回顧:
命令行
環境變量
文件(Json、ini、Xml)
正文
自定義配置源
可能會有疑問,內置的配置源那么多,還不夠用嗎?只能這么說,需求各種各樣,說不一定有一些定制需求 ;就像如今微服務時代,針對于每個服務各自解析配置信息,顯得就不那么合適了,所以就會有一個配置中心的存在,而這里的配置中心就是一個配置源,如果要想像使用本地配置源一樣,就得自定義;來,先看步驟:
實現IConfigrationProvider,通常會直接繼承ConfiguratioProvider抽象類,此類已經實現了IConfigrationProvider;
實現IConfigurationSource,提供自定義的IConfigrationProvider;
針對IConfigurationBuilder增加擴展方法,目的是不暴露自定義配置源代碼,同時使用也方便;
走起,開擼,這里還是以控制臺的程序進行演示:
MyConfigurationProvider
MyConfigurationSource
ConfigurationBuilderExtend(非必須)
像之前一樣使用
運行看效果
簡單吧,是不是秒會,那就對了,就可以繼續下一個知識點;通常對于配置來說,肯定有要去改配置的需求,就好比之前的Asp.Net的Web.Config配置文件,會根據需求進行配置修改,但是,要重啟項目才能使用,由此,熱更新就顯得更有用武之地了,即項目不需要重啟,配置文件修改后,項目后續能獲取到修改之后的數據;接下來以文件配置源的形式簡單舉例演示:
創建一個控制臺項目,這里用Json文件做配置源演示:
運行,默認熱更新是沒開啟的,所以改文件,多次獲取的值是都是舊值,
修改配置文件內容---這里修改的是exe執行程序所在目錄的配置文件,如果用的是絕對目錄的話,修改項目目錄下的配置文件即可:
那如何開啟呢?在指定配置源的時候打開對應的屬性即可:
增加了兩個屬性,其實熱更新的屬性打開reloadOnChange就行了:
optional:?默認為false,意思就是沒有對應配置文件時報錯,如果設置為true,不會報錯,讀取到的值為空;
reloadOnChange:?默認為false,意思就是沒打開熱更新,設置為true,當文件變化時就會重新加載新值;
運行結果,這次修改文件就可以讀取到最新的值了:
熱更新其實就是個屬性的開關,使用就是簡單,接下來簡單舉例演示一下對象綁定吧,即將配置文件中的值綁定為一個對象,業務中使用的不太多,因為有些不愿意單獨再寫一個類來做綁定,但封裝服務的時候有的喜歡綁定為對象進行配置值的獲取;
綁定邏輯:
運行查看:
數據成功綁定到了對象上,但默認情況下,私有屬性是綁定不成功的,但可以打開開關哦,如下:
總結
這里說明下,配置源的加載是有順序的,后添加的配置會覆蓋先添加的配置;這篇就先說這么多吧,相對簡單點,本來想把變更監聽內容在這一塊說說的,但想著可能會導致篇幅長,所以留到下次再說吧,專門針對配置數據變更監聽過程及監聽處理~~~
一直想把Demo的代碼開源到github上,但想了想,前面幾個Demo就不提交了,動動手敲敲,絕對沒壞處(哈哈哈哈,別光看,表面會了,一寫就掉坑);后面的Demo相對復雜點,會開源到github上~~~~
總結
以上是生活随笔為你收集整理的跟我一起学.NetCore之自定义配置源-热更新-对象绑定的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#刷剑指Offer | 从上到下打印二
- 下一篇: 跟我一起学.NetCore之配置变更监听