core) вообще в IoC есть синглетон-регистрация? потому как он (инстанс) будет регин как синглетон в root scope контейнера - тогда какой смысл его иметь такого красиво нарушающего "законы scope-а", если это "в три строчки" можно соорудить через фабричный метод "perScope/transient" ....
Как вариант - иногда удобно все объекты класть синглтонами, а стейт чтоб в dto гулял
Затем, что есть вещи, которые дорогие или которые не имеют понятия сессия
"сессия"? wtf? никто про никаких сессии не говорил. дороговизна создания чего-то решается лёгкой фабрикой что отдаст инстанс.
не, ну любую даже самую лютую дичь можно объяснить "удобно". Например: удобно логировать через экстеншены ILogger, которые де-факто делают строку из переданных аргументов, вместо того чтобы делать объект стейта, куда класть уже значения (структурное логирование тобишь "ломать"). А потом внезапно приходит какой-нибудь злобный безопасник и говорит "ай-ай, нельзя GET запрос логировать даже в Debug уровне для такого-то api"
Да, и в результате нужна какая-то фабрика вместо честного утверждения: хей, это синглтон
Лютая дичь - инстанцировать вороха временных объектов только потому, что кому-то понадобился Scope, без которого можно было бы легко обойтись, сделав все сервисы stateless.
Иными словами для меня идеальный IoC - тот, где только Singleton scope.
Как и любую другую, которая одному конкретному человеку не пригодилась, считать ненужной никому
Транзиент который не транзиент и пер скоуп который ее пер скоуп есть ложь. Иногда эта ложь вынужденна, но в данном случае мы будем врать просто так
nestjs :) там по дефолту контроллеры singleton
Обсуждают сегодня