wire是google開源的使用依賴注入來自動連接組件的代碼生成工具
安裝
go install github.com/google/wire/cmd/wire@latest
官方使用文檔:
https://github.com/google/wire/blob/main/docs/guide.md
文檔參考:
手把手,帶你從零封裝Gin框架(十二):使用 Wire 依賴注入重構
參考項目:
https://github.com/jassue/gin-wire
如果遇到下面報錯
wire: /xxx/cmd/server/wire.go:17:1: inject wireApp: unused provider set "ProviderSet" wire: xx/cmd/server: generate failed wire: at least one generate failure
這是因爲設置了依賴注入的方法沒能找到調用者,在gin項目中,調用的順序一般是data層->service層->handler層->router層->httpserver->app
所以需要把調用的ProviderSet在wire.go文件中完整的寫出來,不能出現中間中斷的情況,wire_gen才能正常的生成
比如寫了data,service,router,httpserver和app,但是漏了handler,這樣就會報上面的錯誤
如果只寫了router,httpserver和app,這樣是可以正常生成的
可以參考:https://github.com/jassue/gin-wire/blob/main/cmd/app/wire_gen.go 中的調用層次