[Go] Viper 加载项目配置,go build 打包配置文件进二进制

Viper 的传统用法局部,加载到某个 package 下的全局变量后,其它 package 可以继续使用。
var Conf *viper.Viper
func init() {
// File name without extension '.json'
filenameWithoutExt := "app.env"
Conf.SetConfigName(filenameWithoutExt)
Conf.SetConfigType("json")
Conf.AddConfigPath("./setting")
if err := Conf.ReadInConfig(); err != nil {
panic("Using config file:" + Conf.ConfigFileUsed())
}
}
要打包文件到二进制中,推荐的工具是 go-bindata/go-bindata
通过命令 `go-bindata -o bindata.go setting/` 在当前目录生成 go 文件,里面有一个 Assert() 函数,main.go 中可以使用。
然后在 main.go 中通过 Viper io 读取的方式读取 Assert() 返回的 []bytes,代码局部如下:
filename := "setting/app.env.json"
bytesContent, err := Asset(filename)
if err != nil {
panic("Asset() can not found setting file")
} Conf.SetConfigType("json")
Conf.ReadConfig(bytes.NewBuffer(bytesContent))
Config *viper.Viper 的值可以设置到其它模块中,方便在外部使用。
通过以上操作,我们可以在任何地方运行 build 生成的二进制文件了。
Refer:有哪些使用Viper的go项目
Project:https://github.com/gopher-lego/skeleton
Link:https://www.cnblogs.com/farwish/p/12733162.html
[Go] Viper 加载项目配置,go build 打包配置文件进二进制的更多相关文章
- asp.net core重新加载应用配置
asp.net core重新加载应用配置 Intro 我把配置放在了数据库或者是Redis里,配置需要修改的时候我要直接修改数据库,然后调用一个接口去重新加载应用配置,于是就尝试写一个运行时重新加载配 ...
- 修改类不重启tomcat 自动加载项目
可以修改类不用重启Tomcat加载整个项目(手工启动) 配置reloadable=true(自动重载) 使用Debug模式,前提是仅限于局部修改.(修改类不用重启--热加载) Tomc ...
- atitit.动态加载数据库配置in orm hibernate mybatis
atitit.动态加载数据库配置in orm 1. 动态加载数据库配置的优点::: 1 1.1. 组合多个配置文件... 1 1.2. 连接多个数据库 1 2. 基本的流程:::getCfg内存对象, ...
- vs 中无法加载项目的解决方案
有时,我们在vs 中打开工程项目时,会出现这样的错误,项目无法加载,解决方案如下: 错误提示: 解决方案: 在vs 中单独打开 工程配置文件 ,然后修改配置,将红圈处的内容注释掉: 重新加载项目:
- IDEA 中tomcat启动问题时,一直出去发布状态,无法加载项目
解决方法:排查clean.build之前添加的xml中的sql语句,发现sql多写了一个逗号,导致无法加载项目.修改完sql,就可以跑了.
- Tomcat启动,不能加载项目问题。
项目部署时遇到的一个Tomcat问题: 启动tomcat后,不能加载项目 直接启动完成 但是项目未加载 最后找到原因: 把环境变量Catalina_HOME删除掉,就能加载. tomcat启 ...
- Angularjs 异步模块加载项目模板
ng-lazy-module-seed(Angularjs 异步模块加载项目模板) 相信做过SPA项目的朋友都遇到过这个问题:页面初始化时需要加载文件太大或太多了,许多文件加载后很可能不会运行到,这是 ...
- 写个重新加载 ocelot 配置的接口
写个重新加载 ocelot 配置的接口 Intro 我们想把 ocelot 的配置放在自己的存储中,放在 Redis 或者数据库中,当修改了 Ocelot 的配置之后希望即时生效,又不想在网关这边定时 ...
- java项目发布到linux服务器,tomcat正常启动但没加载项目
问题描述: java项目发布到linux服务器,一切操作正确,linux命令启动tomcat后,查看日志启动tomcat正常,上传的war包已经解压成功,但是tomcat没加载项目. 解决方法: 1. ...
- 自动化测试-14.selenium加载FireFox配置
前言 有小伙伴在用脚本启动浏览器时候发现原来下载的插件不见了,无法用firebug在打开的页面上继续定位页面元素,调试起来不方便 . 加载浏览器配置,需要用FirefoxProfile(profile ...
随机推荐
- golang 依赖控制反转(IoC) 改进版
最近在开发基于golang下的cqrs框架 https://github.com/berkaroad/squat (陆续开发中,最近断了半年,懒了...).这个框架依赖ioc框架,因为之前写了一个io ...
- Elasticsearch索引不存在时,查询接口报错怎么办?
1.索引不存在,报错:type=index_not_found_exception, reason=no such index解决办法: DSL: GET /text_index_003/_searc ...
- Win10 如何在桌面显示我的电脑
Win10桌面右键鼠标,然后在弹出来的选项中选择个性化. 选择了个性化后会弹出设置界面,在设置中选择[主题] 找到[桌面图标设置] 点击[桌面图标设置],会弹出一个对话框,该对话框有可以设置显示的图标 ...
- 如何安装和使用Docker
本文深入解析Docker,一种革命性的容器化技术,从其基本概念.架构和组件,到安装.配置和基本命令操作.文章探讨了Docker在虚拟化.一致性环境搭建及微服务架构中的关键作用,以及其在云计算领域的深远 ...
- 【已解决】ajax和flask路由传json格式数据出现undefined和object错误
描述一下问题背景: 前台封装一个json字符串给后台传输数据,后台的ajax获取请求之后把接收的数据显示到前台html表格上. jsonify:这个方法可以把字典转化为json字符串 通过jsonif ...
- LLM RAG系列
RAG系列 本文介绍了RAG以及RAG pipeline的整个流程,包括请求转换.路由和请求构造.索引和检索.生成和评估等,其中引用了大量有价值的论文. 参考Advanced RAG Series: ...
- 详解数仓对象设计中序列SEQUENCE原理与应用
本文分享自华为云社区<GaussDB(DWS)对象设计之序列SEQUENCE原理与使用方法介绍>,作者:VV一笑. 1. 前言 适用版本:8.2.1及以上版本 序列SEQUENCE用来生成 ...
- #树,搜索#NOIP2020.9.26模拟tom
分析 考虑最极端的情况也就是TOM天天吃早餐肠或者晚餐肠, 那么早餐肠和晚餐肠应分别构成一个互不相交连通块, 所以题目转换成是否有一个点的子树大小为\(a\)或\(b\), 将这个点与它父亲的边断开就 ...
- 算法笔记-完全二叉树个数计算(时间复杂度小于O(n))
------------恢复内容开始------------ 首先科普一个事实,对于一个满二叉树来说,节点个数=(1<< (高度))-1. 接下来我们看这道题,管他三七二十一,前面那么多树 ...
- Nacos无法连接wsl2上部署的MySQL
情况描述 在部署Nacos时,需要连接MySQL数据库管理数据,但是如果连接的是wsl2上部署的MySQL,使用127.0.0.1或者localhost,通常会出现如下错误: org.springfr ...