Coding 一个简单的 go 依赖注入库

xcrossed · 2020年04月20日 · 最后由 xcrossed 回复于 2020年04月20日 · 871 次阅读

之前在写 java 用 Spring 的时候,最爽的莫不过于依赖注入了.现在写 golang,常常苦于没有这样一个库,模仿 Spring 的方式写了一个简单的依赖注入库.能显著改进代码编排结构.降低耦合.

围观地址 https://github.com/xcrossed/let-go-inject

项目采用 go mod 方式管理依赖.当然作为库,没有任何依赖,😀

使用方式

type Dao struct {
    Name string
}

type BizInterface interface {
    SayHello(string)
}

type biz struct {
    Dao *Dao `inject:""`
}

func (biz *biz) SayHello(name string) {
    fmt.Printf("say:%v\n", name)
}

type Controll struct {
    Biz BizInterface `inject:"biz.impl"`
}


func TestDefaultBeanFactory_AutoWire(t *testing.T) {
    beanfactory := NewDefaultBeanFactory()
    dao := &Dao{"my name is dao."}
    beanfactory.RegisterBean(dao)

    biz := &biz{}
    beanfactory.RegisterBeanWithName("biz.impl", biz)
    ctl := &Controll{}
    beanfactory.RegisterBean(ctl)
    beanfactory.AutoWire()

    assert.NotNil(t, biz.Dao)
    assert.NotNil(t, ctl.Biz)
    assert.Equal(t, dao, biz.Dao)
    assert.Equal(t, biz, ctl.Biz)
}

欢迎围观吐槽

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio

赞一个,能和 uber 的依赖注入库比较一下吗?

kevin 回复

好的,我看一看 uber 的

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册