mirror of
				https://gitee.com/dromara/mayfly-go
				synced 2025-11-04 08:20: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)
 | 
						||
}
 |