AT
резюмируя, есть только два нормальных типа инъекций — "фиксированные" (грубо говоря контейнер-компайл-тайм) через конструктор и "нефиксированные" (передаваемые в рантайме) через параметр выполняемого метода. тогда все сервисы можно делать иммутабельными, а весь контекст (представленный мутабельным стейтом и/или иммутабельными сервисами, выбираемыми для конкретной ситуации) живёт только в переменной и передается только через параметры, потом по окончании всех действий автоматически утилизируется.
Тогда и в роадраннере запускать проект можно смело, и корутинами баловаться, не боясь, что, например, в рамках одного процесса сначала в пошеренном нормалайзере один сериалайзер в свойстве через setNormalizer задан, а потом вдруг другой (в случае, если на проекте несколько сериалайзеров сконфигурировано под разные задачи, но при этом они шерят одни и те же SerializerAware нормалайзеры).