Мы выбрали Dagger2 вместо spring в качестве фреймворка внедрения зависимостей в одном из штормовых приложений. У нас также есть устаревшее приложение на основе Spring MVC, которое использует часть кода из проекта dagger в многопроектной настройке gradle.
(Упрощенная) иерархия проекта выглядит так:
- : кинжал-ядро
- :storm-dagger (зависит от dagger-core)
- :spring-ui (зависит от dagger-core)
Поскольку и пружина, и кинжал имеют свои собственные способы начальной загрузки графа объектов, как лучше всего заставить #3 работать вместе? В настоящее время у нас есть фабричный класс @Component в spring-ui, который «обеспечивает» зависимости от dagger-core. И фабрика, и предоставленные классы затем определяются как бины Spring с использованием шаблона фабрики Spring (класс фабрики как фабричный бин с использованием фабричного метода, а другие предоставленные классы как фабричный метод фабричного бина). Есть лучший способ сделать это?