Le CDI est-il un bon remplacement du printemps?

Nous prévoyons d'écrire une application web à partir de zéro, il a été décidé d'aller avec la dernière édition de Glassfish qui est conforme à la norme Java EE 6, donc nous analysons si CDI peut être utilisé au lieu de Spring.

Peut-on dire que CDI pourrait remplacer Spring?

63
demandé sur Arjan Tijms 2011-05-12 08:39:43

3 réponses

CDI signifie "context and dependency injection", tandis que Spring est un écosystème complet autour d'un conteneur d'injection de dépendance. Pour comparer les deux, vous devez différencier la comparaison.

L'injection de Dépendance est gérée par les deux récipients. La principale différence est le fait que CDI gère DI de manière dynamique (aka: stateful) - cela signifie que les dépendances sont résolues au moment de l'exécution . L'approche de Spring est statique - cela signifie que les composants sont câblés ensemble à Temps de création . Bien que le CDI-way puisse sembler un peu inhabituel à un premier aperçu, il est de loin supérieur et offre des options beaucoup plus avancées (j'écris ceci avec l'arrière-plan de deux applications CDI productives).

Si vous regardez l'écosystème , la situation est différente: Spring est livré avec beaucoup de pots (>150), alors que CDI est assez petit en soi. Une utilisation CDI typique serait à l'intérieur D'un serveur D'applications Java EE 6, mais vous pouvez facilement le faire fonctionner dans un moteur de servlet ou même Java SE. Cela signifie que L'utilisation de CDI ne fait aucune hypothèse sur L'utilisation D'Hibernate, JPA, EJB ou autre - c'est à vous de décider.

Si vous avez besoin de plus de fonctionnalités, CDI est livré avec le concept de extensions portables (ce qui en soi rend l'API utile). Des modules d'extension indépendants comme Apache CODI et Seam 3 existent et couvrent des sujets tels que la sécurité, le mailing, les rapports et plus encore.

Pour résumer: CDI n'est rien comme un "remplacement" pour L'écosystème du printemps, c'est plutôt une amélioration par rapport au mécanisme D'injection de dépendance du printemps. Cela fait partie de Java EE 6, donc si vous êtes sur un GlasFish avec Java EE 6, Vous devriez certainement aller pour CDI. À mes yeux, votre question est plutôt: Puis-je remplacer Spring par Java EE 6? Je suppose que ma réponse est assez évidente ; -)

Regardez Soudure pour obtenir un bon début...

85
répondu jan groth 2013-04-26 20:20:26

Spring est plus qu'un simple conteneur d'injection de dépendance. Il a également des outils pour AOP, des modèles à utiliser avec JPA, SQL, etc. et encore plus.

Cependant CDI peut être utilisé en remplacement de L'API Di De Spring.

9
répondu Behrang 2011-05-12 04:49:22

J'utilise Apache OpenWebBeans comme implémentation CDI et MyFaces CODI comme extension portable pour plusieurs projets. Je suis très heureux avec elle et je n'ai eu aucun problème avec elle. OpenWebBeans manque actuellement un peu de documentation mais si vous ne pouvez pas obtenir quelque chose pour fonctionner, il est assez facile d'utiliser les archétypes Maven fournis par MyFaces pour générer des projets simples avec toutes les dépendances nécessaires ou vous demandez sur la liste de diffusion. C'est tellement génial si vous travaillez simplement sur votre Application et vous n'êtes pas bloqué par des insectes méchants. J'ai aussi fait beaucoup de projets avec le Printemps. C'est ok, mais si vous demandez ce que j'utiliserais pour le prochain projet, la réponse claire est OpenWebBeans et CODI! Je préfère OpenWebBeans à Weld car OpenWebBeans est très adoptable, c'est génial car vous pouvez personnaliser plus ou moins tout ce qui n'est pas couvert par L'API/SPI CDI officielle et runtimeperformance est meilleur. Et après le premier projet, Je ne remettrais plus jamais en question CODI car c'est très stable, ils ont les versions régulières et la plupart d'entre eux ont apporté de nouvelles fonctionnalités qui améliorent beaucoup la productivité. CODI est à mon humble avis l'endroit qui est le plus stable et la plupart des innovations proviennent de toute la terre CDI.

Pour répondre À votre question: Pour moi CDI complètement remplacé printemps, mais vous avez besoin d'extensions portables qui remplissent les lacunes. CDI en standard n'a jamais eu l'intention de tout résoudre et certaines parties comme les conversations sont brisées par la conception. Les bonnes nouvelles sont que vous avez de grands projets comme MyFaces CODI. CODI corrige presque tous ces problèmes.

4
répondu Dar Whi 2011-08-21 19:45:43