Т.е, создать контейнер и всунуть кучу интерфейсов и передавать его отдельным параметром везде, как и контекст?
Ну нет, я скорее про то, как делает wire от google
У тебя есть коннект к БД (а точнее пул), он создается при старте программы один раз и передается в конструкторы репозиториев.
А репозитории уже передаются в конструкторы сервисов (ака бизнес-логика).
А потом это всё передается в view (REST, gRPC, обработчики событий и т.д.)