V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
kkfnui
V2EX  ›  Go 编程语言

golang 数据库配置管理

  •  
  •   kkfnui ·
    kkfnui · 2018-01-07 10:56:38 +08:00 · 1243 次点击
    这是一个创建于 2298 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在用 golang 写了些的数据处理程序,往往都是读一个数据库,然后写到另外一个数据库。 中间可能访问下 redis。

    这样在 main 函数的开始和结束的时候,都要处理一遍这些事情。 另外,使用的时候还需要通过参数传递,比较麻烦。

    为了解决这些重复的工作,就将数据库、redis 相关的设置成全局变量。

    mysql、redis 使用一致的接口,通过配置初始化。比如:

    def initMysql(name string) 
    def getMysql(name string) *sql.conn
    def unInitMysql(name string) 
    
    // 使用
    initMysql("src")
    initMysql("dest")
    // do foo
    unInitMysql("dest")
    unInitMysql("src")
    

    但是,这样存在一个问题。程序内部使用 mysql 和 redis 可能会调整。如果可以像 spring 一样自动注入的方式(之前用过一段时间的 spring,说到底是被 spring 灌的) 就更方便了。

    向大家请教两个问题:

    1. 现在大家的项目中是怎么做的,有没有更简便的方法?
    2. golang 现在是否有类似 spring 的框架呢?
    kkfnui
        1
    kkfnui  
    OP
       2018-01-07 11:15:11 +08:00 via iPhone
    可以用懒加载的方式,解决显式初始化的问题
    dcalsky
        2
    dcalsky  
       2018-01-07 18:11:48 +08:00
    单例模式可解。
    orvice
        3
    orvice  
       2018-01-08 01:01:22 +08:00
    def 是什么鬼
    kkfnui
        4
    kkfnui  
    OP
       2018-01-08 10:18:44 +08:00
    @orvice 尴尬,把 python 的关键字当成 func 了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5398 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 08:22 · PVG 16:22 · LAX 01:22 · JFK 04:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.