Go Wire
Contents
Go Wire
wire
是 Google 开源的一个依赖注入工具。它是一个代码生成器,并不是一个框架。我们只需要在一个特殊的go
文件中告诉wire
类型之间的依赖关系,它会自动帮我们生成代码,帮助我们创建指定类型的对象,并组装它的依赖。
使用:
go get github.com/google/wire/cmd/wire
wire 示例:
定义结构体和方法一般结构
package handler
import (
"fmt"
"wire-example/config"
"wire-example/service"
)
type UserHandler struct {
Service *service.UserService
Cfg *config.Cfg
}
func NewUserHandler(s *service.UserService, cfg *config.Cfg) *UserHandler {
return &UserHandler{Service: s, Cfg: cfg}
}
func (h *UserHandler) HandleRequest(id int) {
fmt.Println("Handling user:", h.Service.GetUser(id))
fmt.Println(h.Cfg.Name)
}
func InitializeHandler(cfg *config.Cfg) *handler.UserHandler {
wire.Build(
repo.NewUserRepository,
service.NewUserService,
handler.NewUserHandler,
)
return nil
}