Application context

Application context

Nest 애플리케이션을 마운트하는 방법에는 여러 가지가 있습니다. 웹앱, 마이크로 서비스 또는 Nest 응용 프로그램 컨텍스트를 만들 수 있습니다. Nest 컨텍스트는 모든 인스턴스화 된 클래스를 보유하는 Nest 컨테이너 주위의 래퍼입니다. 응용 프로그램 객체를 사용하여 가져온 모듈 내에서 기존 인스턴스를 직접 가져올 수 있습니다. 따라서 CRON 작업을 포함하여 어디서나 Nest 프레임 워크를 활용할 수 있으며 그 위에 CLI를 구축할 수도 있습니다.

Getting started

Nest 애플리케이션 컨텍스트를 작성하기 위해 다음 구문을 사용합니다.

@@filename()
async function bootstrap() {
  const app = await NestFactory.createApplicationContext(ApplicationModule);
  // application logic...
}
bootstrap();

이후 Nest를 사용하면 Nest 애플리케이션에 등록된 모든 인스턴스를 선택할 수 있습니다. 우리가 TasksModuleTasksService를 가지고 있다고 상상해 봅시다. 이 클래스는 CRON 작업 내에서 호출하려는 사용 가능한 메소드 세트를 제공합니다.

@@filename()
const app = await NestFactory.create(ApplicationModule);
const tasksService = app.get(TasksService);

그리고 그것이 전부입니다. TasksService 인스턴스를 잡기 위해서는 get()메소드를 사용해야 했습니다. 우리는 전체 모듈 트리를 거치지 않아도 되는데, get()메소드는 등록된 각 모듈에서 인스턴스를 자동으로 검색하는 query와 같은 역할을 합니다. 그러나 엄격한 컨텍스트 검사를 선호하는 경우에는 항상 get()메소드의 두 번째 인수로 전달해야하는 strict: true 옵션 객체를 사용하여 전환할 수 있습니다. 그런 다음 선택한 컨텍스트에서 특정 인스턴스를 선택하려면 모든 모듈을 거쳐야합니다.

@@filename()
const app = await NestFactory.create(ApplicationModule);
const tasksService = app.select(TasksModule).get(TasksService, { strict: true });

get()

애플리케이션 컨텍스트에서 사용 가능한 컨트롤러 또는 제공자 (가드, 필터 등 포함)의 인스턴스를 검색합니다.

select()

예를 들어, 모듈 그래프를 탐색하여 선택한 모듈에서 특정 인스턴스를 가져옵니다 (엄격한 모드와 함께 사용).

info 힌트 엄격하지 않은 모드에서는 루트 모듈이 기본적으로 선택됩니다. 다른 모듈을 선택하려면 전체 모듈 트리를 단계별로 수행해야합니다.

Last updated