index0h
@index0h
PHP, Golang. https://github.com/index0h

Существует ли конфигурабельный DI для golang?

Всем привет, столкнулся с такой проблемкой: во время старта приложения необходимо разруливать огромное количество зависимостей между главными компонентами системы. При этом часть из них нужно иметь возможность конфигурировать именно в момент запуска, а не на этапе сборки задавать параметры.
По ссылке набросал примерную структуру компонентов, часть из них опциональные, часть взаимозаменяемые. Ссылки через yaml-овские алиасы не делал, что бы сохранить структуру с минимальным количество уровней. "%...%" - это ссылка на другой компонент.

Собственно требуется некий DI контейнер, который бы смог разруливать зависимости в lazy-load режиме, при этом не вкомпилироваться по жесткому в бинарь, а запрашивать свои настройки динамически.

Вот этот golangit/dic уже тыкал, с приватными свойствами так и не завелся + требует жесткую сбилдженную систему зависимостей. Безусловно, можно добавить парсилку того же ямла (viper например) и делать это динамически, но тогда уже легче руками написать все эти вызовы.

Безсловно, подобная штука обязана иметь некий регистр конструкторов.

Подытожим, сталкивались ли вы с подобными задачами, как решали? Есть ли что-то готовое?
  • Вопрос задан
  • 552 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Ваша задача не решается через контейнер зависимостей - если вам надо в рантайме нужную реализацию подсовывать - это решается через какие-нибудь фабрики, которые вам предоставляет контейнер уже со всеми нужными зависимостями.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы