PhalGo-Viper获取配置

PhalGo-Viper获取配置

viper项目地址:https://github.com/spf13/viper

什么是viper

viper是国外大神spf13编写的开源配置解决方案,viper拥有一下功能以及特性如下:

  • 设置默认值
  • 从JSON,toml YAML,HCl,和java属性配置文件
  • 从环境变量env读取值
  • 读缓冲区
  • 远程读取配置文件
  • key不区分大小写

为什么用viper

viper不用担心你的文件格式,可以获取环境变量,也可以从远端获取配置文件,并且还有缓冲机制,功能非常棒非常牛逼,能满足不同的对配置文件的使用的要求,所以PhalGo采用viper来解决配置问题

初始化Config

PhalGo追求最简单的使用各个组件所以viper我们只需要初始化就可以开始使用,我们只需要调用NewConfig函数需要你传入两个参数,一个是你文件相对于项目目录的相对路径,比如我在项目目录下建立的/conf文件目录就需要填写conf,第二个就是配置文件文件名,只需要名称即可,可以不用输入后缀viper会自动识别.

//初始化配置文件
phalgo.NewConfig("conf", "sys")

比如我们创建了一个sys.toml文件内容如下:

强烈推荐使用toml格式,toml格式介绍:http://mlworks.cn/posts/introduction-to-toml/

[system]
port = ":1234"

[dbDefault]
dbHost = "localhost"           #数据库连接地址
dbName = "phalgo"              #数据库名称
dbUser = "root"                #数据库用户名
dbPasswd = ""                  #数据库密码
dbPort = "3306"                #数据库端口号
dbOpenconns_max = 20           #最大连接数
dbIdleconns_max = 0            #最大空闲连接
dbType = "mysql"               #数据库类型

我们就可以简单的使用

phalgo.Config.GetString("system.port")  #返回一个string类型的":1234"

phalgo.Config和"github.com/spf13/viper"是等价的,所以可以通过phalgo.Config来调用viper提供的方法

Config详解

设置默认值

phalgo.Config.SetDefault("ContentDir", "content")
phalgo.Config.SetDefault("LayoutDir", "layouts")
phalgo.Config.SetDefault("Taxonomies", map[string]string{"tag": "tags", "category": "categories"})

获取不同类型配置

  • phalgo.Config.Get(key string) : interface{}
  • phalgo.Config.GetBool(key string) : bool
  • phalgo.Config.GetFloat64(key string) : float64
  • phalgo.Config.GetInt(key string) : int
  • phalgo.Config.GetString(key string) : string
  • phalgo.Config.GetStringMap(key string) : map[string]interface{}
  • phalgo.Config.GetStringMapString(key string) : map[string]string
  • phalgo.Config.GetStringSlice(key string) : []string
  • phalgo.Config.GetTime(key string) : time.Time
  • phalgo.Config.GetDuration(key string) : time.Duration
  • phalgo.Config.IsSet(key string) : bool

获取多级参数

viper支持获取配置的层级关系,在每个key之间通过"."分割机制,比如上面演示的

phalgo.Config.GetString("system.port")

就是获取的二级参数

更多

viper提供很多有意思的功能,可以通过开篇viper项目地址进行了解

时间: 2024-09-16 17:09:01

PhalGo-Viper获取配置的相关文章

JavaWeb学习之Servlet(四)----ServletConfig获取配置信息、ServletContext的应用

[正文] 一.ServletConfig:代表当前Servlet在web.xml中的配置信息(用的不多) String getServletName()  -- 获取当前Servlet在web.xml中配置的名字 String getInitParameter(String name) -- 获取当前Servlet指定名称的初始化参数的值 Enumeration getInitParameterNames()  -- 获取当前Servlet所有初始化参数的名字组成的枚举 ServletConte

怎么查看电脑系统配置 用记事本快速获取配置信息

我们常会查看电脑的基本配置信息,怎么查看信息呢,本文教你一种利用记事本获取系统配置信息的方法. 在通常情况下,我们需要借助一个系统工具软件来获取系统信息.如果身边没有可用的软件工具,我们如何获取系统配置信息呢? 下面介绍的方法只利用记事本工具,就能很轻松地获取系统配置信息的文本文件.下面是具体的实现方法: 第一步:编辑一个TXT文本文件,文件可命名为"获取系统配置信息.TXT",在文件中输入以下一行内容"systeminfo>D:系统配置清单.TXT",然后保

wifi共享精灵一直获取配置信息的解决方法

  1.使用驱动精灵更新无线网卡驱动 2.登陆官网下载最新版软件 3.安装之后等待程序安装完毕,勿强制关闭 4.第一次重新启动后等待5分钟之后再打开软件  

php Smarty初体验二 获取配置信息_php模板

先看结果-- 页面源代码如下: 分析一下代码,经过检查index_config.php(Smarty连接文件).index.php文件均无错,下面重点看看模板文件,可能原因就出在这个tpl文件上,出代码-- 复制代码 代码如下: {% config_load file="1.conf" section="style2" %} <html> <head> <meta http-equiv="Content-Type"

java-web.xml中配置地址信息如何从properties中获取

问题描述 web.xml中配置地址信息如何从properties中获取 现在有一个java项目,其中包含web.xml,还有spring的一些配置文件,比如applicationcontext.xml还有一些jsp文件.现在想在这三类文件中添加一些IP配置,三类文件里面都要用到,想统一进行配置放在properties文件中,如何配置或写程序读取才能实现三种文件都能通过类似${变量名}或函数的方式获取配置值? 解决方案 我觉得你还是把你的需求说出来比较好 感觉你这个问题有点奇怪,不晓得你要达到什么

揭开.NET 2.0配置之谜(三)

声明:此文是译文,原文是Jon Rista,Unraveling the Mysteries of .NET 2.0 Configuration,由于这篇文章比较长,所以我就分为几部分来翻译,这是此译文的第三部分.若翻译有不当之处,请不吝赐教,以免此译文误导他人,在此谢过. let's go on! 10.配置技巧和窍门 在我研究和实验配置节的时候,我学到一些技巧,可是使他们更容易使用.自定义配置节的某些方面非常乏味,如所有时间一直通过调用ConfigurationManager.GetSect

Solaris:在Enterprise Server上配置SCSI磁带机

不是每一个运行 Solaris Operating System 的地方都拥有备份解决方案的资源,它们甚至不需要这些资源,这些备份解决方案如价格昂贵的磁带自动更换机.磁带库或 Tape Silo.通常所需要的只是根文件系统.重要数据库或一个小型开发条目目代码的备份或 ufsdump.在这些情况下,像 SCSI DDS 磁带机这样的外部设备通常就已经足够. 以下信息有助于在大多数具有外部 SCSI 连接的 Sun Enterprise Server 上配置外部设备.这些信息可以应用于 Solari

Castle.ActiveRecord的初始化配置补充及配置封装的解决方案

前些天我发了一篇关于AR的配置的文章,是我帮一位刚学习AR的朋友做了一个小实例后写上来的,里面我采用了IConfigurationSource,ActiveRecord是在web.config里配置的,其实ActiveRecord可以单独写在别的地方或动态配置也是可以的,比如用XML来配置,用Hashtable来配置.下面我简单介绍了怎么配置. 一.用XML配置,通过XmlConfigurationSource来获取配置信息,AppConfig.xml,详细配置请看下面xml数据 1<?xml

开源全局配置中心XDiamond

项目地址: https://github.com/hengyunabc/xdiamond 简介 全局配置中心,存储应用的配置项,解决配置混乱分散的问题.名字来源于淘宝的开源项目diamond,前面加上一个字母X以示区别. wiki 设计思路 在线演示 地址:xdiamond.coding.io,登陆选择standard,用户名密码:admin/admin 特性 所见即所得,在管理界面上看到的所有配置即项目运行时的配置 支持groupId,artifactId,version,profile四个维