refactor: ioc与系统初始化处理方式调整

This commit is contained in:
meilin.huang
2024-01-22 11:35:28 +08:00
parent de5b9e46d3
commit 9efd20f1b9
26 changed files with 257 additions and 55 deletions

View File

@@ -1,16 +1,45 @@
package initialize
import (
dbInit "mayfly-go/internal/db/init"
machineInit "mayfly-go/internal/machine/init"
"mayfly-go/pkg/biz"
"mayfly-go/pkg/ioc"
)
func InitOther() {
// 为所有注册的实例注入其依赖的其他组件实例
biz.ErrIsNil(ioc.DefaultContainer.InjectComponents())
// 初始化ioc函数
type InitIocFunc func()
machineInit.Init()
dbInit.Init()
// 初始化函数
type InitFunc func()
var (
initIocFuncs = make([]InitIocFunc, 0)
initFuncs = make([]InitFunc, 0)
)
// 添加初始化ioc函数由各个默认自行添加
func AddInitIocFunc(initIocFunc InitIocFunc) {
initIocFuncs = append(initIocFuncs, initIocFunc)
}
// 添加初始化函数,由各个默认自行添加
func AddInitFunc(initFunc InitFunc) {
initFuncs = append(initFuncs, initFunc)
}
// 系统启动时,调用各个模块的初始化函数
func InitOther() {
// 调用各个默认ioc组件注册初始化优先调用ioc初始化注册函数和注入函数可能在后续的InitFunc中需要用到依赖实例
for _, initIocFunc := range initIocFuncs {
initIocFunc()
}
initIocFuncs = nil
// 为所有注册的实例注入其依赖的其他组件实例
biz.ErrIsNil(ioc.InjectComponents())
// 调用各个默认的初始化函数
for _, initFunc := range initFuncs {
initFunc()
}
initFuncs = nil
}

View File

@@ -3,15 +3,6 @@ package initialize
import (
"fmt"
"io/fs"
auth_router "mayfly-go/internal/auth/router"
common_router "mayfly-go/internal/common/router"
db_router "mayfly-go/internal/db/router"
machine_router "mayfly-go/internal/machine/router"
mongo_router "mayfly-go/internal/mongo/router"
msg_router "mayfly-go/internal/msg/router"
redis_router "mayfly-go/internal/redis/router"
sys_router "mayfly-go/internal/sys/router"
tag_router "mayfly-go/internal/tag/router"
"mayfly-go/pkg/config"
"mayfly-go/pkg/middleware"
"mayfly-go/static"
@@ -20,6 +11,18 @@ import (
"github.com/gin-gonic/gin"
)
// 初始化路由函数
type InitRouterFunc func(router *gin.RouterGroup)
var (
initRouterFuncs = make([]InitRouterFunc, 0)
)
// 添加初始化路由函数,由各个默认自行添加
func AddInitRouterFunc(initRouterFunc InitRouterFunc) {
initRouterFuncs = append(initRouterFuncs, initRouterFunc)
}
func InitRouter() *gin.Engine {
// server配置
serverConfig := config.Conf.Server
@@ -43,20 +46,11 @@ func InitRouter() *gin.Engine {
// 设置路由组
api := router.Group(serverConfig.ContextPath + "/api")
{
common_router.Init(api)
auth_router.Init(api)
sys_router.Init(api)
msg_router.Init(api)
tag_router.Init(api)
machine_router.Init(api)
db_router.Init(api)
redis_router.Init(api)
mongo_router.Init(api)
// 调用所有模块注册的初始化路由函数
for _, initRouterFunc := range initRouterFuncs {
initRouterFunc(api)
}
initRouterFuncs = nil
return router
}

View File

@@ -1,10 +0,0 @@
package initialize
import (
sysapp "mayfly-go/internal/sys/application"
"mayfly-go/pkg/req"
)
func InitSaveLogFunc() req.SaveLogFunc {
return sysapp.GetSyslogApp().SaveFromReq
}

View File

@@ -1,10 +1,20 @@
package initialize
import (
dbInit "mayfly-go/internal/db/init"
// 系统进程退出终止函数
type TerminateFunc func()
var (
terminateFuncs = make([]TerminateFunc, 0)
)
// 添加系统退出终止时执行的函数,由各个默认自行添加
func AddTerminateFunc(terminateFunc TerminateFunc) {
terminateFuncs = append(terminateFuncs, terminateFunc)
}
// 终止进程服务后的一些操作
func Terminate() {
dbInit.Terminate()
for _, terminateFunc := range terminateFuncs {
terminateFunc()
}
}