Skip to content

spine.App

概览

spine.App 是 Spine 应用的入口。它用于注册构造函数、路由、拦截器和传输协议,然后通过 Run 启动应用。

go
app := spine.New()
app.Constructor(NewUserService, NewUserController)
app.Interceptor(&LoggingInterceptor{})
app.Route("GET", "/users", (*UserController).List)
app.Run(boot.Options{Address: ":8080"})

主要方法

方法用途
New()创建应用实例
Constructor(...)注册容器构造函数
Route(method, path, handler, options...)注册 HTTP 路由
Interceptor(...)注册全局拦截器
Transport(...) / RegisterTransport(...)配置传输适配器
Consumers(...)注册消息消费者
WebSocket(...)注册 WebSocket 处理器
Run(options)启动所有已配置组件

路由与选项

go
app.Route("GET", "/users/:id", (*UserController).Get,
    route.WithInterceptors(&AuthInterceptor{}),
)

处理器必须是指针接收者的方法表达式。路由选项可加入仅作用于该路由的拦截器。

boot.Options

boot.Options 设置监听地址、优雅关闭、HTTP 选项及恢复中间件。

go
app.Run(boot.Options{
    Address: ":8080",
    EnableGracefulShutdown: true,
    ShutdownTimeout: 10 * time.Second,
    HTTP: &boot.HTTPOptions{},
})

事件与消息

应用可注册 Kafka、RabbitMQ 等传输,以及消费者处理器。控制器可通过注入的事件总线发布领域事件;消费者使用相同的执行管道处理事件。

启动顺序

Spine 在启动时收集构造函数和路由、验证处理器、解析依赖并预热控制器。这样可以在服务接收请求前发现配置错误。