使用uber-go的fx进行依赖注入

入门 下面是一个官方的例子: package main import ( "context" "fmt" "go.uber.org/fx" "io" "net" "net/http" "os" ) func main() { fx.New( fx.Provide( NewHTTPServer, NewEchoHandler, NewServeMux, ), fx.Invoke(func(srv *http.Server) {}), ).Run() } func NewHTTPServer(lc fx.Lifecycle, mux *http.ServeMux) *http.Server { srv := &http.Server{ Addr: ":8080", Handler: mux, } lc.Append(fx.Hook{ OnStart: func(ctx context.Context) error { ln, err := net.Listen("tcp", srv.Addr) if err != nil { return err } fmt.Println("Starting HTTP server at", srv.Addr) go srv.Serve(ln) return nil }, OnStop: func(ctx context....

December 13, 2023 · 5 min · czyt