Vous souhaiterez peut-être inclure Spring dans votre liste de frameworks d'injection de dépendances que vous envisagez. Voici quelques réponses à vos questions:
Accouplement au cadre
Pico - Pico a tendance à décourager l'injection de setter, mais à part cela, vos cours n'ont pas besoin de connaître Pico. Seul le câblage doit être connu (vrai pour tous les frameworks DI).
Guice - Guice prend désormais en charge les annotations standard JSR 330 , vous n'avez donc plus besoin d'annotations spécifiques à Guice dans votre code. Spring prend également en charge ces annotations standard. L'argument que les gars de Guice utilisent est que sans un processeur d'annotation Guice en cours d'exécution, cela ne devrait pas avoir d'impact si vous décidez d'utiliser un autre framework.
Spring - Spring a pour objectif de vous permettre d'éviter toute mention du framework Spring dans votre code. Parce qu'ils ont beaucoup d'autres aides / utilitaires, etc., la tentation est assez forte de dépendre du code Spring, cependant.
Performance
Pico - Je ne connais pas trop les caractéristiques de vitesse du Pico
Guice - Guice a été conçu pour être rapide et la comparaison mentionnée dans la référence comporte quelques chiffres. Certes, si la vitesse est une considération primordiale, soit l'utilisation de Guice, soit le câblage manuel doit être envisagée
Printemps - Le printemps peut être lent. Il y a eu du travail pour le rendre plus rapide et l'utilisation de la bibliothèque JavaConfig devrait accélérer les choses.
Facilité d'utilisation
Pico - Simple à configurer. Pico peut prendre des décisions en matière de câblage automatique pour vous. On ne sait pas comment il s’adapte à de très grands projets.
Guice - Simple à configurer, il vous suffit d'ajouter des annotations et d'hériter de AbstractModule pour lier les choses ensemble. S'adapte bien aux grands projets car la configuration est réduite au minimum.
Spring - Relativement facile à configurer, mais la plupart des exemples utilisent Spring XML comme méthode de configuration. Les fichiers XML Spring peuvent devenir très volumineux et complexes au fil du temps et prendre du temps à se charger. Pensez à utiliser un mélange d'injection de dépendance à ressort et à manivelle pour surmonter ce problème.
Taille de la communauté
Pico - Petit
Guice - Moyen
Printemps - Grand
Expérience
Pico - Je n'ai pas beaucoup d'expérience avec Pico mais ce n'est pas un cadre largement utilisé, il sera donc plus difficile de trouver des ressources.
Guice - Guice est un framework populaire et son accent sur la vitesse est le bienvenu lorsque vous avez un grand projet que vous redémarrez beaucoup en développement. Je suis préoccupé par la nature distribuée de la configuration, c'est-à-dire qu'il n'est pas facile de voir comment toute notre application est mise en place. C'est un peu comme AOP à cet égard.
Spring - Spring est généralement mon choix par défaut. Cela dit, le XML peut devenir encombrant et le ralentissement qui en résulte ennuyeux. Je finis souvent par utiliser une combinaison d'injection de dépendance et de ressort fabriqués à la main. Lorsque vous avez réellement besoin d'une configuration basée sur XML, Spring XML est assez bon. Spring a également déployé beaucoup d'efforts pour rendre d'autres frameworks plus conviviaux pour l'injection de dépendances, ce qui peut être utile car ils utilisent souvent les meilleures pratiques pour le faire (JMS, ORM, OXM, MVC, etc.).
Références