Возможно, вы захотите включить Spring в ваш список платформ Dependency Injection, которые вы рассматриваете. Вот несколько ответов на ваши вопросы:
Соединение с рамой
Пико - Пико имеет тенденцию препятствовать инъекции сеттера, но кроме этого, ваши классы не должны знать о Пико. Необходимо знать только проводку (верно для всех плат DI).
Guice - Guice теперь поддерживает стандартные аннотации JSR 330 , поэтому вам больше не нужны специфические аннотации Guice в вашем коде. Spring также поддерживает эти стандартные аннотации. Аргумент, который используют ребята из Guice, заключается в том, что без работающего процессора аннотаций Guice они не должны иметь никакого влияния, если вы решите использовать другую среду.
Spring - Spring нацелен на то, чтобы вы избегали упоминания фреймворка Spring в вашем коде. Поскольку у них действительно есть много других помощников / утилит и т. Д., Соблазн довольно сильно зависит от кода Spring.
Производительность
Пико - я не слишком знаком со скоростными характеристиками Пико
Guice - Guice был разработан, чтобы быть быстрым, и сравнение, упомянутое в ссылке, имеет несколько чисел. Конечно, если скорость является основным фактором, следует использовать Guice или проводку вручную
Весна - Весна может быть медленной. Была проделана работа, чтобы сделать это быстрее, и использование библиотеки JavaConfig должно ускорить процесс.
Удобство использования
Pico - Простота настройки. Пико может принять некоторые решения для вас. Непонятно, как оно масштабируется до очень крупных проектов.
Guice - Простая настройка, вы просто добавляете аннотации и наследуете от AbstractModule, чтобы связать вещи вместе. Хорошо масштабируется для больших проектов, так как конфигурация сведена к минимуму.
Spring - Относительно прост в настройке, но в большинстве примеров Spring XML используется в качестве метода настройки. XML-файлы Spring со временем могут стать очень большими и сложными, и для их загрузки потребуется время. Чтобы преодолеть это, подумайте о том, чтобы использовать смесь пружинного и ручного запуска Dependency Injection.
Размер сообщества
Пико - Маленький
Guice - Средний
пружина - большая
Опыт
Pico - У меня не было большого опыта работы с Pico, но это не очень широко используемая среда, поэтому поиск ресурсов будет сложнее.
Guice - Guice - это популярный фреймворк, и его внимание на скорости приветствуется, когда у вас есть большой проект, который вы много перезапускаете в процессе разработки. Меня беспокоит распределенная природа конфигурации, т. Е. Не так просто увидеть, как все наше приложение собрано вместе. В этом отношении это немного похоже на АОП.
Spring - Spring обычно мой выбор по умолчанию. Тем не менее, XML может стать громоздким и в результате замедление раздражает. Я часто заканчиваю тем, что использую комбинацию Ручной Инъекции зависимости и Spring. Когда вам действительно нужна конфигурация на основе XML, Spring XML довольно хорош. Spring также приложил много усилий для того, чтобы сделать другие фреймворки более удобными для внедрения зависимостей, что может быть полезно, поскольку при этом они часто используют лучшие практики (JMS, ORM, OXM, MVC и т.
Ссылки