507b79f257
2、新增索引和缓存;
50 lines
1.5 KiB
Go
50 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"gorm.io/driver/mysql"
|
|
"gorm.io/gorm"
|
|
"level_go/internal/api"
|
|
"level_go/internal/router"
|
|
"level_go/internal/service"
|
|
"level_go/pkg/config"
|
|
"log"
|
|
)
|
|
|
|
// main 是服务启动入口,负责完成配置加载、数据库连接、依赖组装和 HTTP 路由启动。
|
|
func main() {
|
|
gin.SetMode(gin.ReleaseMode)
|
|
|
|
// 初始化配置文件,后续数据库 DSN 和服务端口都从全局配置中读取。
|
|
config.InitConfig()
|
|
|
|
// 使用配置中的 MySQL DSN 建立 GORM 连接;连接失败时直接终止进程,避免服务在不可用状态下启动。
|
|
dsn := config.GetDSN()
|
|
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
|
|
if err != nil {
|
|
log.Fatal("数据库连接失败:", err)
|
|
}
|
|
sqlDB, err := db.DB()
|
|
if err != nil {
|
|
log.Fatal("获取数据库连接池失败:", err)
|
|
}
|
|
sqlDB.SetMaxIdleConns(20)
|
|
sqlDB.SetMaxOpenConns(100)
|
|
|
|
// 依赖注入:Service 持有数据库连接,Handler 持有对应 Service。
|
|
commonSrv := &service.CommonService{DB: db}
|
|
stockSrv := &service.StockService{DB: db}
|
|
limitBoardSrv := &service.LimitBoardService{DB: db}
|
|
|
|
commonHandler := &api.CommonHandler{Service: commonSrv}
|
|
stockHandler := &api.StockHandler{Service: stockSrv}
|
|
limitBoardHandler := api.NewLimitBoardHandler(limitBoardSrv)
|
|
|
|
// 创建 Gin 路由并启动 HTTP 服务。
|
|
r := router.NewRouter(commonHandler, stockHandler, limitBoardHandler)
|
|
|
|
port := config.GetServerPort()
|
|
log.Printf("服务启动于端口 %s", port)
|
|
r.Run(port)
|
|
}
|