mirror of
https://gitee.com/dromara/mayfly-go
synced 2025-11-05 00:40:24 +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)
|
|||
|
|
}
|