Насколько мне известно, Dagger генерирует код, в то время как Guice и Spring полагаются на обработку во время выполнения, поэтому Dagger работает быстрее, но требует больше работы со стороны программиста. Из-за предела производительности это хорошо для разработки мобильных (Android).
Однако, когда мы остаемся с Guice и Spring, последний имеет множество интеграций. Какой смысл разрабатывать/использовать Guice, если мы можем использовать Spring Framework (что делает в основном то же самое, но предлагает более простой доступ к базе данных)?
Разве Google не пытается изобрести колесо, создав собственный инструмент DI, вместо того, чтобы использовать (и, возможно, способствовать) Spring Framework?
Я ищу дерево решений, которое ведет через выбор инструмента DI.