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