go 依赖注入工具( go-wire )使用(一 讲解)
共分两篇:
go 依赖注入工具( go-wire )使用(二 用户指南)
项目地址:github.com/google/wire
简介
wire是 Google 开源的一个依赖注入工具。它是一个代码生成器,并不是一个框架。我们只需要在一个特殊的go文件中告诉wire类型之间的依赖关系,它会自动帮我们生成代码,帮助我们创建指定类型的对象,并组装它的依赖。
使用
1. 简单例子:
一个普通的符合依赖注入设计原理的例子:
package dao
import (
"errors"
"fmt"
"time"
)
type Message string
func NewMessage() Message {
return Message("hi here!")
}
type Greeter struct {
Message Message
}
func NewGreeter(m Message) *Greeter {
return &Greeter{
Message: m}
}
func (g *Greeter) Greet() Message {
return g.Message
}
type Event struct {
Greeter *Greeter
}
func NewEvent(greeter *Greeter) *Event {
return &Event{
Greeter: greeter}
}
func (e *Event