Справка

Внутреннее устройство container

Binding, aliases и autowiring в рамках поддерживаемого публичного API.

Binding и время жизни сервисов

Для интерфейсов и важных сервисов используйте явные binding. singleton() разделяет один экземпляр, а set() создаёт сервис при каждом разрешении.

Autowiring

Autowiring может создавать конкретные классы, если их зависимости можно разрешить. Он не заменяет понятную композицию приложения.

Держите container на границе композиции

Используйте container как инструмент композиции приложения, а не как service locator внутри доменной логики.