教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 go-configor配置文件支持热加载

go-configor配置文件支持热加载

发布时间:2022-02-07   编辑:jiaochengji.com
教程集为您提供go-configor配置文件支持热加载等资源,欢迎您收藏本站,我们将为您提供最新的go-configor配置文件支持热加载资源

在编写go程序的时候我们加载配置有多中方式,比较常用的还是配置文件。我们需要配置文件能够热加载(当配置发生变化后)不用重新启动程序,就能够使配置生效。

我们采用的是开源的配置文件方式 https://github.com/jinzhu/configor

好,下面上货。

<pre class="has"><code class="language-Go">package config import ( "fmt" "github.com/jinzhu/configor" "time" ) func init() { configFileName := "config.yml" //reload模式 configor.New(&configor.Config{ AutoReload: true, AutoReloadInterval: time.Second, AutoReloadCallback: func(config interface{}) { //config变化后触发 fmt.Printf("%v changed \r\n", config) }, }).Load(&Config, configFileName) //无reload模式 //configor.Load(&Config, configFileName) fmt.Printf("config: %#v\r\n", Config) } //配置类 var Config = struct { APPName string `default:"app name"` DB struct { Name string User string `default:"root"` Password string `required:"true" env:"DBPassword"` Port uint `default:"3306"` } Contacts []struct { Name string Email string `required:"true"` } }{}</code></pre>

在main函数中读取

<pre class="has"><code class="language-Go">package main import ( "fmt" "selfcommon/src/common/config" "time" ) func main() { fmt.Println(config.Config.APPName) time.Sleep(time.Duration(6) * time.Second) fmt.Println(config.Config.APPName) }</code></pre>

 

配置文件

<pre class="has"><code>appname: common db: name: test user: root password: 123456 port: 3306 contacts: - name: i test email: test@test.com - name: i test2 email: test2@test.com </code></pre>

 

在运行期间我们修改配置文件

<pre class="has"><code class="language-Go">config: struct { APPName string "default:\"app name\""; DB struct { Name string; User string "default:\"root\""; Password string "required:\"true\" env:\"DBPassword\""; Port uint "default:\"3306\"" }; Contacts []struct { Name string; Email string "required:\"true\"" } }{APPName:"test", DB:struct { Name string; User string "default:\"root\""; Password string "required:\"true\" env:\"DBPassword\""; Port uint "default:\"3306\"" }{Name:"test", User:"root", Password:"123456", Port:0xcea}, Contacts:[]struct { Name string; Email string "required:\"true\"" }{struct { Name string; Email string "required:\"true\"" }{Name:"i test", Email:"test@test.com"}, struct { Name string; Email string "required:\"true\"" }{Name:"i test2", Email:"test2@test.com"}}} test &{testa {test root 123456 3306} [{i test test@test.com} {i test2 test2@test.com}]} changed testa</code></pre>

 

到此这篇关于“go-configor配置文件支持热加载”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
go-configor配置文件支持热加载
Go语言中加载.yml配置文件的方式
go配置文件区分环境信息
Golang 配置文件热加载
go基于viper实现配置文件热更新及其源码分析
golang开源配置管理组件-go-archaius介绍
初识GO语言以及GO语言安装及环境搭建
笔记本电脑发热严重怎么办 有什么样的笔记本散热器比较好
golang GF框架
Go语言从入门到精通 -【web项目实战篇】- 读取配置文件

[关闭]
~ ~