feat: 新增简易版ioc

This commit is contained in:
meilin.huang
2024-01-21 22:52:20 +08:00
parent f4a64b96a9
commit f27d3d200f
106 changed files with 815 additions and 707 deletions

20
server/pkg/ioc/default.go Normal file
View File

@@ -0,0 +1,20 @@
package ioc
// 全局默认实例容器
var DefaultContainer = NewContainer()
// 注册实例至全局默认ioc容器
func Register(component any, opts ...ComponentOption) {
DefaultContainer.Register(component, opts...)
}
// 根据组件名从全局默认ioc容器获取实例
func Get[T any](name string) T {
c, _ := DefaultContainer.Get(name)
return c.(T)
}
// 使用全局默认ioc容器中已注册的组件实例 -> 注入到指定实例所依赖的组件实例
func Inject(component any) error {
return DefaultContainer.Inject(component)
}