Введение в область видимости в Nest
По умолчанию Nest создаёт один объект сервиса на всё приложение. Любой контроллер, которому нужен этот тип, получает ссылку на тот же экземпляр.
Иногда одного объекта на процесс мало. Данные запроса нельзя смешивать между клиентами, а тестовая заглушка должна жить только рядом с одним получателем. За это отвечает область видимости провайдера: правило, когда фреймворк создаёт новый объект, а когда переиспользует старый.
Область задают в параметрах пометки
@Injectable у сервиса или
в настройках @Controller.
Список провайдеров в модуле не меняется:
по-прежнему указывают класс, а Nest
сам решает, сколько экземпляров
держать в памяти.
Дальше разберём отдельный экземпляр на запрос, новый объект на каждое внедрение, явную стандартную область, настройку контроллера и долгоживущий провайдер. На сайте с записями это помогает не делить состояние между параллельными обращениями к API.