# di
**Repository Path**: supos-community-edition/di
## Basic Information
- **Project Name**: di
- **Description**: golang 依赖注入框架
- **Primary Language**: Go
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-11-17
- **Last Updated**: 2025-11-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# do - Dependency Injection
[](https://github.com/samber/do/releases)

[](https://pkg.go.dev/github.com/samber/do)

[](https://goreportcard.com/report/github.com/samber/do)
[](https://codecov.io/gh/samber/do)
[](./LICENSE)
**⚙️ A dependency injection toolkit based on Go 1.18+ Generics.**
This library implements the Dependency Injection design pattern. It may replace the fantastic `uber/dig` package. `samber/do` uses Go 1.18+ generics and therefore offers a type‑safe API.

**See also:**
- [samber/ro](https://github.com/samber/ro): Reactive Programming for Go: declarative and composable API for event-driven applications
- [samber/lo](https://github.com/samber/lo): A Lodash-style Go library based on Go 1.18+ Generics
- [samber/mo](https://github.com/samber/mo): Monads based on Go 1.18+ Generics (Option, Result, Either...)
----
💖 Support This Project
I’m going all-in on open-source for the coming months.
Help sustain development: Become an individual sponsor or join as a corporate sponsor.
----
**Why this name?**
I love the **short name** for such a utility library. This name is the sum of `DI` and `Go` and no Go package uses this name.
## 💡 Features
- **📒 Service registration**
- Register by type
- Register by name
- Register multiple services from a package at once
- **🪃 Service invocation**
- Eager loading
- Lazy loading
- Transient loading
- Tag-based invocation
- Circular dependency detection
- **🧙♂️ Service aliasing**
- Implicit (provide struct, invoke interface)
- Explicit (provide struct, bind interface, invoke interface)
- **🔁 Service lifecycle**
- Health check
- Graceful unload (shutdown)
- Dependency-aware parallel shutdown
- Lifecycle hooks
- **📦 Scope (a.k.a module) tree**
- Visibility control
- Dependency grouping
- **📤 Container**
- Dependency graph resolution and visualization
- Default container
- Container cloning
- Service override
- **🧪 Debugging & introspection**
- Explain APIs: scope tree and service dependencies
- Web UI & HTTP middleware (std, Gin, Fiber, Echo, Chi)
- **🌈 Lightweight, no dependencies**
- **🔅 No code generation**
- **😷 Type‑safe API**
## 🚀 Install
```sh
# v2 (latest)
go get github.com/samber/do/v2@latest
# v1
go get github.com/samber/do@v1.6.0
```
This library is v2 and follows SemVer strictly.
No breaking changes will be made to exported APIs before v3.0.0.
This library has no dependencies except the Go std lib.
### 🔥 Migration from v1 to v2
[Documentation here](https://do.samber.dev/docs/upgrading/from-v1-x-to-v2)
## 🤠 Documentation
- [GoDoc: https://godoc.org/github.com/samber/do/v2](https://godoc.org/github.com/samber/do/v2)
- [Documentation](https://do.samber.dev/docs/getting-started)
- [Examples](https://github.com/samber/do/tree/master/examples)
- [Project templates](https://do.samber.dev/examples)
## 🎬 Project boilerplate
- [do-template-api](https://github.com/samber/do-template-api)
- [do-template-worker](https://github.com/samber/do-template-worker)
- [do-template-cli](https://github.com/samber/do-template-cli)
## 🤝 Contributing
- Ping me on Twitter [@samuelberthe](https://twitter.com/samuelberthe) (DMs, mentions, whatever :))
- Fork the [project](https://github.com/samber/do)
- Fix [open issues](https://github.com/samber/do/issues) or request new features
Don't hesitate ;)
```bash
# Install some dev dependencies
make tools
# Run tests
make test
# or
make watch-test
```
## 👤 Contributors

## 💫 Show your support
Give a ⭐️ if this project helped you!
[](https://github.com/sponsors/samber)
## 📝 License
Copyright © 2022 [Samuel Berthe](https://github.com/samber).
This project is [MIT](./LICENSE) licensed.