春天 vs EJB.Spring可以取代EJB吗?[已关闭]

2022-08-31 10:41:29

因为Spring能够像EJB一样使用事务。对我来说,Spring能够取代使用EJB的要求。谁能告诉我使用 EJB 的额外优势是什么?


答案 1

Spring从一开始就被开发为EJB的替代品,所以答案当然是你可以使用Spring代替EJB。

如果使用EJB有“优势”,我会说这取决于你团队的技能。如果你没有Spring的专业知识,也有很多EJB经验,那么坚持使用EJB 3.0可能是一个很好的举动。

从理论上讲,为支持 EJB 标准而编写的应用服务器可以从一个兼容的 Java EE 应用服务器移植到另一个应用服务器。但这意味着要远离任何和所有特定于供应商的扩展,这些扩展将您锁定在一个供应商中。

应用程序服务器(例如,WebLogic,Tomcat,JBOSS等)之间的弹簧端口很容易,因为它不依赖于它们。

然而,你被锁定在春天。

Spring鼓励良好的OO设计实践(例如,接口,层,关注点分离),即使您决定切换到Guice或其他DI框架,这些实践也有利于它们遇到的任何问题。

更新:这个问题和答案在2014年已有五年的历史。需要说的是,编程和应用程序开发的世界在那段时间里发生了很大的变化。

它不再仅仅是在Java或C#,Spring或EJB之间做出选择。使用vert.x,可以完全避开Java EE。您可以在没有应用服务器的情况下编写高度可扩展的多语言应用程序。

更新:现在是2016年3月。Spring Boot 提供了一种更好的方法来编写没有 Java EE 应用程序服务器的应用程序。您可以创建一个可执行 JAR 并在 JVM 上运行它。

我想知道Oracle是否会继续支持Java EE规范。Web 服务已经接管了 EJB。EJB 解决方案已死。(只是我的意见。


答案 2

首先,让我说清楚,我不是说你不应该使用Spring,而是因为你要求一些优点,这里至少有两个:

  • EJB 3是一个标准,而Spring不是(这是一个事实上的标准,但这不是一回事),这在可预见的将来不会改变。虽然您可以将Spring框架与任何应用程序服务器一起使用,但Spring应用程序被锁定在Spring本身和您选择在Spring中集成的特定服务中。

  • Spring框架位于应用程序服务器和服务库之上。服务集成代码(例如数据访问模板)驻留在框架中,并向应用程序开发人员公开。相反,EJB 3 框架被集成到应用程序服务器中,服务集成代码被封装在接口后面。因此,EJB 3 供应商可以通过在应用程序服务器级别工作来优化性能和开发人员体验。例如,它们可以将 JPA 引擎与 JTA 事务管理紧密结合。另一个例子是集群支持,它对 EJB 3 开发人员是透明的。

EJB 3并不完美,它仍然缺乏一些功能(例如,注入非托管组件,如简单的POJO)。


推荐