服务配置
服务配置初始化,并生成本地配置文件!
On this page
使用方法
- 使用 github.com/spf13/viper 第三方包实现.
- 需要实现
func getViperConfig() viper_server.ViperConfig
方法:
package cache
import (
"fmt"
"github.com/fsnotify/fsnotify"
"github.com/snowlyg/iris-admin/g"
"github.com/snowlyg/iris-admin/server/viper_server"
"github.com/spf13/viper"
)
var CONFIG Redis
type Redis struct {
DB int `mapstructure:"db" json:"db" yaml:"db"`
Addr string `mapstructure:"addr" json:"addr" yaml:"addr"`
Password string `mapstructure:"password" json:"password" yaml:"password"`
PoolSize int `mapstructure:"pool-size" json:"poolSize" yaml:"pool-size"`
}
// getViperConfig 获取初始化配置
func getViperConfig() viper_server.ViperConfig {
configName := "redis"
db := fmt.Sprintf("%d", CONFIG.DB)
poolSize := fmt.Sprintf("%d", CONFIG.PoolSize)
return viper_server.ViperConfig{
Directory: g.ConfigDir,
Name: configName,
Type: g.ConfigType,
Watch: func(vi *viper.Viper) error {
if err := vi.Unmarshal(&CONFIG); err != nil {
return fmt.Errorf("反序列化错误: %v", err)
}
// 监控配置文件变化
vi.SetConfigName(configName)
vi.WatchConfig()
vi.OnConfigChange(func(e fsnotify.Event) {
fmt.Println("配置发生变化:", e.Name)
if err := vi.Unmarshal(&CONFIG); err != nil {
fmt.Printf("反序列化错误: %v \n", err)
}
})
return nil
},
// 注意:设置默认配置值的时候,前面不能有空格等其他符号.必须紧贴左侧.
Default: []byte(`
{
"db": ` + db + `,
"addr": "` + CONFIG.Addr + `",
"password": "` + CONFIG.Password + `",
"pool-size": ` + poolSize + `
}`),
}
}