網(wǎng)站首頁(yè) 編程語言 正文
一、Viper 是什么?
Viper 是應(yīng)用程序的完整配置的管理工具,用于在應(yīng)用程序中工作,可以處理所有類型的配置需求和格式。
二、安裝 Viper
go get github.com/spf13/viper
三、Viper 有什么作用
- 設(shè)置默認(rèn)值
- 讀取 JSON、TOML、YAML(YML)、HCL、envfile 和 Java properties 屬性配置文件
- 實(shí)時(shí)查看和重讀配置文件(可選)
- 從環(huán)境變量中讀取
- 從遠(yuǎn)程配置系統(tǒng)(etcd 或 Consor)讀取數(shù)據(jù),并觀察變化
- 從命令行標(biāo)志讀取
- 從緩沖區(qū)讀取
- 設(shè)置顯式值
四、Viper demo 可供參考
func main() { ReadIni() ReadYml() } func ReadIni() { v := viper.New() v.AddConfigPath("./conf") // 路徑(當(dāng)前路徑下的conf文件夾) v.SetConfigName("configA") // 名稱 v.SetConfigType("ini") // 類型 err := v.ReadInConfig() // 讀配置 if err != nil { if _, ok := err.(viper.ConfigFileNotFoundError); ok { fmt.Println("找不到配置文件..") } else { fmt.Println("配置文件出錯(cuò)..") } } // [section] 如果沒寫就是 default,也就是下面的 key 變成 default.username s1 := v.GetString("db.username") s2 := v.GetInt("web.port") fmt.Printf("ini 文件的數(shù)據(jù)庫(kù)名字:%v, 網(wǎng)絡(luò)端口號(hào):%v \n", s1, s2) } func ReadYml() { v := viper.New() v.AddConfigPath("./conf") v.SetConfigName("configB") v.SetConfigType("yml") err := v.ReadInConfig() if err != nil { if _, ok := err.(viper.ConfigFileNotFoundError); ok { fmt.Println("找不到配置文件..") } else { fmt.Println("配置文件出錯(cuò)..") } } s1 := v.GetString("db.username") s2 := v.GetInt("web.port") s3 := v.GetString("app.time") fmt.Printf("yml 文件的數(shù)據(jù)庫(kù)名字:%v, 網(wǎng)絡(luò)端口號(hào):%v, apptime:%v \n", s1, s2, s3) }
結(jié)果:
ini 文件的數(shù)據(jù)庫(kù)名字:admin, 網(wǎng)絡(luò)端口號(hào):8080
yml 文件的數(shù)據(jù)庫(kù)名字:root, 網(wǎng)絡(luò)端口號(hào):8088, apptime:05/30
配置文件內(nèi)容
- configA.ini
;數(shù)據(jù)庫(kù)配置
[db]
username=admin
password=123
driver=mysql
port=3306
;網(wǎng)絡(luò)配置
[web]
port=8080
- configB.yml
# 數(shù)據(jù)庫(kù)配置
db:
username: root
password: 123
driver: mysql
port: 3306
# 網(wǎng)絡(luò)配置
web:
port: 8088
# APP配置
app: {id: 10,time: 05/30}
注意
以上例子在根目錄下面創(chuàng)建了 conf 文件夾,然后創(chuàng)建了 configA.ini 和 configB.yml 文件
五、總結(jié)
使用 viper 能夠很好的去管理你的配置文件信息,比如數(shù)據(jù)庫(kù)的賬號(hào)密碼,服務(wù)器監(jiān)聽的端口,你可以通過更改配置文件去更改這些內(nèi)容,而不用定位到那一段代碼上去,提高了開發(fā)效率。 需要注意的是,你還需要補(bǔ)充配置文件的格式相關(guān)的知識(shí),才能更好的去使用它。
原文鏈接:https://juejin.cn/post/7103452349401661471
相關(guān)推薦
- 2022-12-03 PostgreSQL?數(shù)組類型操作使用及特點(diǎn)詳解_PostgreSQL
- 2022-02-20 C#?.NET實(shí)現(xiàn)掃描識(shí)別圖片中的文字_C#教程
- 2022-02-03 checkbox修改默認(rèn)樣式
- 2023-12-22 onReachBottom觸底觸發(fā)事件
- 2022-09-28 Linux在兩個(gè)服務(wù)器直接傳文件的操作方法_Linux
- 2022-07-11 PostgreSQL連接到數(shù)據(jù)庫(kù)增刪改查
- 2022-03-22 ASP.NET Core中如何使用Dapper
- 2022-12-05 深入了解C++封閉類的定義與使用_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支