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();
}
}