Printemps vs EJB. Le printemps peut-il remplacer EJB? [fermé]

Depuis Printemps est capable d'utiliser des transactions tout comme EJB. Pour moi, Spring est capable de remplacer L'exigence d'utiliser EJB. Quelqu'un peut-il me dire quels sont les avantages supplémentaires de l'utilisation D'EJB?

91
demandé sur sal 2009-11-22 19:21:36

4 réponses

Spring a été développé comme une alternative à EJB dès sa création, donc la réponse est bien sûr que vous pouvez utiliser Spring à la place des EJB.

S'il y a un "avantage" à utiliser les EJB, je dirais que cela dépendrait des compétences de votre équipe. Si vous n'avez pas D'expertise de printemps, et beaucoup D'expérience EJB, alors peut-être coller avec EJB 3.0 est un bon choix.

Les serveurs d'applications écrits pour prendre en charge la norme EJB peuvent, en théorie, être portés d'un serveur d'applications Java EE conforme à un autre. Mais cela signifie Rester à l'écart de toutes les extensions spécifiques au fournisseur qui vous verrouillent à un fournisseur.

Spring ports facilement entre les serveurs d'applications (par exemple, WebLogic, Tomcat, JBOSS, etc.) parce qu'il ne dépend pas d'eux.

Cependant, vous êtes enfermé dans Spring.

Spring encourage les bonnes pratiques de conception OO (par exemple, les interfaces, les couches, la séparation des préoccupations) qui profitent à tout problème qu'elles touchent, même si vous décidez de passer à Guice ou à un autre framework DI.

Mise à jour: cette question et cette réponse ont cinq ans en 2014. Il faut dire que le monde de la programmation et du développement d'applications a beaucoup changé à cette époque.

Ce n'est plus seulement un choix entre Java ou C#, Spring ou EJBs. Avec vert.x Il est possible d'éviter complètement Java EE. Vous pouvez écrire très évolutif, applications polyglottes sans serveur d'applications.

Mise à jour: C'est Mars 2016 maintenant. Spring Boot offre une meilleure façon de Ecrire des applications sans serveurs D'applications Java EE. Vous pouvez créer un fichier JAR exécutable et l'exécuter sur une JVM.

Je me demande si Oracle continuera à prendre en charge la spécification Java EE. Les services Web ont pris le relais pour les EJB. La solution EJB est morte. (Juste mon avis.)

191
répondu duffymo 2016-03-21 13:37:34

Tout d'abord, permettez-moi de le dire clairement, Je ne dis pas que vous ne devriez pas utiliser Spring mais, parce que vous demandez des avantages, voici au moins deux d'entre eux:

  • EJB 3 est une norme alors que Spring ne L'est pas (c'est une norme de facto mais ce n'est pas la même chose) et cela ne changera pas dans un avenir prévisible. Bien que vous puissiez utiliser Spring framework avec n'importe quel serveur d'applications, les applications Spring sont verrouillées à la fois dans Spring lui-même et dans les services spécifiques que vous choisissez de intégrer au Printemps.

  • Le framework Spring se trouve au-dessus des serveurs d'applications et des bibliothèques de services. Le code d'intégration de Services (par exemple les modèles d'accès aux données) réside dans le cadre et est exposé aux développeurs d'applications. En revanche, le framework EJB 3 est intégré dans le serveur d'applications et le code d'intégration de service est encapsulé derrière une interface. Les fournisseurs EJB 3 peuvent ainsi optimiser les performances et l'expérience des développeurs en travaillant sur l'application au niveau du serveur. Par exemple, ils peuvent lier étroitement le moteur JPA à la gestion des transactions JTA. Un autre exemple est le support de clustering qui est transparent pour les développeurs EJB 3.

EJB 3 n'est pas parfait, il manque encore certaines fonctionnalités (par exemple l'injection de composants non gérés comme de simples POJOs).

47
répondu Pascal Thivent 2009-11-22 19:37:44

Les points de Pascal sont valides. Il y a cependant ce qui suit en faveur du printemps.

  • La spécification EJB est en fait un peu lâche, et donc différents comportements peuvent être observés avec différents serveurs d'applications. Ce ne sera pas vrai pour la plupart des cas, bien sûr, mais j'ai eu un problème pour certains "coins sombres".

  • Spring a beaucoup de goodies supplémentaires, comme spring-test, AOP, MVC, intégration JSF, etc. EJB en a certains (intercepteurs, pour exemple), mais à mon avis ils ne sont pas très développés.

En conclusion, cela dépend principalement de votre cas exact.

20
répondu Bozho 2009-11-22 19:44:48

Spring est destiné à compléter EJB, pas à le remplacer. Spring est une couche sur le dessus de EJB. Comme nous le savons, le codage D'EJB se fait en utilisant L'API,ce qui signifie que nous devons tout implémenter dans les API en utilisant le framework Spring. Nous pouvons créer un code de Plaque de chaudière, puis prendre cette plaque, y ajouter des trucs, puis tout est fait. En interne, Spring est connecté avec EJB - Spring n'existerait pas sans EJB.

Le principal avantage de L'Utilisation du ressort est qu'il n'y a pas de couplage du tout entre les classes.

-25
répondu sasi 2014-02-27 10:20:20