mirror of
https://gitee.com/dromara/mayfly-go
synced 2025-11-04 00:10:25 +08:00
63 lines
1.2 KiB
Go
63 lines
1.2 KiB
Go
package ioc
|
||
|
||
import (
|
||
"testing"
|
||
)
|
||
|
||
type UserApp struct {
|
||
UserRepo *UserRepo `inject:""` // inject=""则默认使用字段名作为组件名进行查找并注入
|
||
|
||
sysRepo *SysRepo
|
||
}
|
||
|
||
// 通过Inject开头函数注入,组件名为去除Inject字符串后的其余字符串,即SysRepo
|
||
func (u *UserApp) InjectSysRepo(sr *SysRepo) {
|
||
u.sysRepo = sr
|
||
}
|
||
|
||
type UserRepo struct {
|
||
Name string `inject:"username"`
|
||
}
|
||
|
||
type SysRepo struct {
|
||
Name string `inject:"sysname"`
|
||
}
|
||
|
||
func TestInject(t *testing.T) {
|
||
Register("哈哈哈", WithComponentName("username"))
|
||
Register("呵呵呵", WithComponentName("sysname"))
|
||
|
||
userRepo := &UserRepo{}
|
||
Register(userRepo)
|
||
|
||
sysRepo := new(SysRepo)
|
||
Register(sysRepo)
|
||
|
||
userApp := new(UserApp)
|
||
Register(userApp)
|
||
|
||
if err := InjectComponents(); err != nil {
|
||
println(err.Error())
|
||
}
|
||
println(userApp)
|
||
}
|
||
|
||
func TestInjectWithCname(t *testing.T) {
|
||
Register("哈哈哈", WithComponentName("username"))
|
||
Register("呵呵呵", WithComponentName("sysname"))
|
||
|
||
userRepo := &UserRepo{}
|
||
Register(userRepo, WithComponentName("UserRepo"))
|
||
|
||
userApp := new(UserApp)
|
||
Register(userApp)
|
||
|
||
sysRepo := new(SysRepo)
|
||
Register(sysRepo, WithComponentName("SysRepo"))
|
||
|
||
if err := InjectComponents(); err != nil {
|
||
println(err.Error())
|
||
}
|
||
println(userApp)
|
||
}
|