EnglishΒ ο½Β δΈζ
Gone is a lightweight dependency injection framework based on Golang tags, implementing component dependency management through concise annotations. Here is a typical usage example (a struct embedded with gone.Flag, which we call Goner):
type Dep struct {
gone.Flag
Name string
}
type Component struct {
gone.Flag
dep *Dep `gone:"*"` //Dependency injection
log gone.Logger `gone:"*"` //Inject gone.Logger
// Inject configuration, get value from environment variable GONE_NAME;
// if using components like goner/viper, values can be obtained from config
// files or config centers.
// Reference documentation: https://github.com/gone-io/goner
name string `gone:"config:name"`
}
func (c *Component) Init() {
c.log.Infof(c.dep.Name) //Use dependency
c.log.Infof(c.name) //Use configuration
}
- Comprehensive Dependency Injection Support
- Struct field injection (supports private fields)
- Function parameter injection (auto-matching by type)
- Configuration parameter injection (supports environment variables, config centers and config files)
- Third-party component injection (via Provider mechanism) π Detailed Documentation
- Supports defining initialization methods, service start/stop methods and related lifecycle hook functions for Goners, enabling automated service management and custom operations.
- Provides ecosystem goner components supporting configuration, logging, database, LLM, observability and more.
- Provides scaffolding tool gonectl supporting project creation, component management, code generation, test mocking, compilation and running.
- Install required tools
go install github.com/gone-io/gonectl@latest
go install go.uber.org/mock/mockgen@latest
gonectl create myproject
cd myproject
go mod tidy
gonectl run ./cmd/server
ππ» https://github.com/gone-io/gone/releases
If you find any bugs or have feature requests, feel free to submit an issue or submit a pull request.
If you have any questions, welcome to contact us through:
gone
is released under the MIT License, see LICENSE for details.