2023-07-20 22:41:13 +08:00
|
|
|
|
package initialize
|
|
|
|
|
|
|
2023-12-27 22:59:20 +08:00
|
|
|
|
import (
|
2024-01-21 22:52:20 +08:00
|
|
|
|
"mayfly-go/pkg/biz"
|
|
|
|
|
|
"mayfly-go/pkg/ioc"
|
2023-12-27 22:59:20 +08:00
|
|
|
|
)
|
2023-07-20 22:41:13 +08:00
|
|
|
|
|
2024-01-22 11:35:28 +08:00
|
|
|
|
// 初始化ioc函数
|
|
|
|
|
|
type InitIocFunc func()
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化函数
|
|
|
|
|
|
type InitFunc func()
|
|
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
|
initIocFuncs = make([]InitIocFunc, 0)
|
|
|
|
|
|
initFuncs = make([]InitFunc, 0)
|
|
|
|
|
|
)
|
|
|
|
|
|
|
2025-04-15 21:42:31 +08:00
|
|
|
|
// 添加初始化ioc函数,由各个模块自行添加(直接init方法中ioc.Register注册不会打印ioc相关日志)
|
2024-01-22 11:35:28 +08:00
|
|
|
|
func AddInitIocFunc(initIocFunc InitIocFunc) {
|
|
|
|
|
|
initIocFuncs = append(initIocFuncs, initIocFunc)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-04-15 21:42:31 +08:00
|
|
|
|
// 添加初始化函数,由各个模块自行添加
|
2024-01-22 11:35:28 +08:00
|
|
|
|
func AddInitFunc(initFunc InitFunc) {
|
|
|
|
|
|
initFuncs = append(initFuncs, initFunc)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 系统启动时,调用各个模块的初始化函数
|
2023-07-20 22:41:13 +08:00
|
|
|
|
func InitOther() {
|
2024-01-22 11:35:28 +08:00
|
|
|
|
// 调用各个默认ioc组件注册初始化,优先调用ioc初始化注册函数和注入函数(可能在后续的InitFunc中需要用到依赖实例)
|
|
|
|
|
|
for _, initIocFunc := range initIocFuncs {
|
|
|
|
|
|
initIocFunc()
|
|
|
|
|
|
}
|
|
|
|
|
|
initIocFuncs = nil
|
|
|
|
|
|
|
2024-01-21 22:52:20 +08:00
|
|
|
|
// 为所有注册的实例注入其依赖的其他组件实例
|
2024-01-22 11:35:28 +08:00
|
|
|
|
biz.ErrIsNil(ioc.InjectComponents())
|
2024-01-21 22:52:20 +08:00
|
|
|
|
|
2024-03-02 19:08:19 +08:00
|
|
|
|
// 调用各个模块的初始化函数
|
2024-01-22 11:35:28 +08:00
|
|
|
|
for _, initFunc := range initFuncs {
|
2024-01-23 19:30:28 +08:00
|
|
|
|
go initFunc()
|
2024-01-22 11:35:28 +08:00
|
|
|
|
}
|
|
|
|
|
|
initFuncs = nil
|
2023-07-20 22:41:13 +08:00
|
|
|
|
}
|