Spring与EJB(优缺点)

Spring与EJB(优缺点),spring,jakarta-ee,ejb-3.1,Spring,Jakarta Ee,Ejb 3.1,我目前正在准备我的期末专题研究。我必须开发一个用于人力资源管理的分布式应用程序,但是在我的技术基准测试中,我发现在Spring和EJB3.1之间做出选择是令人困惑的 我不知道哪一个是最合适和最容易使用的。我对这两种技术都是初学者,因此我希望有人能帮助我。你不会在EJB和Spring之间做出选择,实际上你会在Java EE和Spring之间做出选择,因为EJB只是Java EE的一部分,在早期还包括JMS、servlet、JSP、JSF、CDI等其他组件(J2EE 1.4)Java企业版的编程模型

我目前正在准备我的期末专题研究。我必须开发一个用于人力资源管理的分布式应用程序,但是在我的技术基准测试中,我发现在Spring和EJB3.1之间做出选择是令人困惑的


我不知道哪一个是最合适和最容易使用的。我对这两种技术都是初学者,因此我希望有人能帮助我。

你不会在EJB和Spring之间做出选择,实际上你会在Java EE和Spring之间做出选择,因为EJB只是Java EE的一部分,在早期还包括JMS、servlet、JSP、JSF、CDI等其他组件(J2EE 1.4)Java企业版的编程模型有很多缺陷和缺陷,但最重要的是它冗长乏味,有大量的锅炉板代码和大量的xml配置。Spring是作为一种支持约定而非配置原则的替代框架引入的。换句话说,在春季,有一些合理的默认设置,如果您需要,可以重新配置。JavaEE5采用了与Spring相同的约定而非配置原则,引入了显著的变化,极大地减少了运行所需的代码量和复杂性,因此Spring在这方面不再具有任何明显的优势

同样重要的是要记住,JavaEE只是一个规范。要构建一个真实世界的应用程序,你需要一个实现,现在有很多实现——Glassfish、JBoss、Tomcate等等。所有这些都提供了Java EE规范的不同实现,这增加了复杂性——我的意思是,现在你必须选择要选择的Java EE实现。你可以用来自单一来源的Spring来对比

这两个框架提供了非常相似的功能。所有支持事务、ORM、提供构建业务逻辑的工具、支持CDI、AOP。在Spring和JavaEE中,您只能使用所需的部分,换句话说,您不必使用整个框架。您甚至可以一起使用它们—它们可以互操作。由于引入了可嵌入容器,您现在甚至可以在桌面应用程序等传统上属于Spring领域的领域中使用所需的JavaEE功能


但JavaEE在Spring之后仍然缺乏的一个方面是舒适的可测试性。为EJB编写单元测试并不容易——为此,您必须使用特殊的第三方框架(Arquillian)并在测试中编写一些样板代码(例如,用于构建测试部署包并将其部署到容器上,等等)。事实上,javaee缺乏对开箱即用测试ejb的任何支持。相比之下,Spring是buuild,考虑了可测试性和TDD。测试SpringBean很容易,因为Spring包括对应用程序所有部分的测试(单元测试、集成测试)和模拟的捆绑支持。

感谢您的回答,这是一个非常有用的回答。有时,似乎每次有人提出臭名昭著的“spring或ejb”问题时,它都会以某种毫无根据的宗教讨论而告终