Kush's Wiki

samber/

do

commited date: 2025-12-13

#Go #Dependency Injection

Go言語のDependency Injection(依存性注入)ツールキット

Go 1.18+のジェネリクス機能を基盤とした型安全なAPIを提供するDIライブラリ。uber/digの代替として開発された

DIライブラリとしての特徴:

  • ジェネリクスによる型安全性: do.MustInvoke[*Engine](i) のように型パラメータを指定してサービスを取得。コンパイル時に型チェックが行われる
  • 柔軟なサービス登録: do.Provide()do.ProvideNamed()do.ProvideValue() による個別登録、または do.Package() によるパッケージ単位の一括登録
  • ローディング戦略: Eager、Lazy、Transientの3種類のローディング方式をサポート
  • ライフサイクル管理: ヘルスチェック、グレースフルシャットダウン、依存関係を考慮した並列シャットダウン
  • 循環依存検出: 依存関係の循環を自動検出
  • デバッグ機能: Web UIとHTTPミドルウェアによる依存グラフの可視化

コード生成不要で軽量な設計