createElysiaApplication 函数初始化根模块并返回一个准备好监听请求的 Elysia 实例。
基本用法
typescript
import { createElysiaApplication } from "nestelia";
const app = await createElysiaApplication(AppModule);
app.listen(3000);createElysiaApplication 的工作流程
- 解析模块树 — 递归处理导入、提供者和控制器
- 注册提供者 — 将所有提供者添加到 DI 容器
- 实例化控制器 — 创建控制器实例并注入依赖
- 注册路由 — 将装饰后的方法映射到 Elysia 路由
- 运行生命周期钩子 — 按顺序调用
onModuleInit和onApplicationBootstrap - 返回 ElysiaNestApplication — 准备好调用
.listen()
与微服务配合使用
使用微服务包时,createElysiaApplication 返回一个支持 HTTP + 微服务混合模式的 ElysiaNestApplication:
typescript
import { createElysiaApplication } from "nestelia";
import { Transport } from "nestelia/microservices";
const app = await createElysiaApplication(AppModule);
app.connectMicroservice({
transport: Transport.REDIS,
options: { host: "localhost", port: 6379 },
});
await app.startAllMicroservices();
app.listen(3000);优雅关闭
nestelia 支持关闭生命周期钩子。当进程接收到终止信号时:
BeforeApplicationShutdown钩子首先运行OnModuleDestroy钩子运行以进行清理OnApplicationShutdown钩子最后运行
typescript
@Injectable()
class DatabaseService implements OnModuleDestroy {
async onModuleDestroy() {
await this.connection.close();
}
}