https://github.com/kittizz/fxx
An add on for Fx:
https://github.com/kittizz/fxx
addon app-framework dependency-injection framework fx go golang uber-go
Last synced: 29 days ago
JSON representation
An add on for Fx:
- Host: GitHub
- URL: https://github.com/kittizz/fxx
- Owner: kittizz
- Archived: true
- Created: 2022-03-14T22:18:08.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2022-03-14T23:06:21.000Z (almost 4 years ago)
- Last Synced: 2025-12-15T15:20:36.762Z (about 2 months ago)
- Topics: addon, app-framework, dependency-injection, framework, fx, go, golang, uber-go
- Language: Go
- Homepage:
- Size: 5.86 KB
- Stars: 8
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🦜 Fxx [![GoDoc][doc-img]][doc]
An add on for [Fx](https://github.com/uber-go/fx):
* add `func MultiProvide() fx.Option`.
## Installation
We recommend locking to [SemVer](http://semver.org/) range `^1` using [go mod](https://github.com/golang/go/wiki/Modules):
```shell
go get go.uber.org/fx@v1
go get github.com/kittizz/fxx
```
## Example
```go
func main() {
fx.New(
fxx.MultiProvide(
repository.NewRepository,
user_service.NewUserService,
),
fx.Invoke(
func(
userRepo *user_repository.UserRepository,
orderRepo *order_repository.OrderRepository,
) {
fmt.Println("Loadin :", userRepo.GetUser())
for k, v := range orderRepo.List() {
fmt.Println("My Order >", "["+k+"]", v)
}
os.Exit(0)
},
),
).Run()
}
....
package repository
var NewRepository = fxx.Modules(
user_repository.NewUserRepository,
order_repository.NewOrderRepository,
)
....
package user_service
func NewUserService() *UserService {
return &UserService{}
}
```
[doc-img]: http://img.shields.io/badge/GoDoc-Reference-blue.svg
[doc]: https://godoc.org/github.com/kittizz/fxx