Spring vs EJB(优势和劣势)

Inf*_*015 19 spring java-ee ejb-3.1

我目前正准备进行最后的项目研究.我必须开发一个用于管理人力资源的分布式应用程序,但根据我使用的技术基准测试,我发现在Spring或EJB 3.1之间做出决定令人困惑.

我不知道哪种最适合和最容易使用.我是这两种技术的初学者,因此我希望有人可以帮助我.

akh*_*ess 64

你不选择EJB和Spring,你实际上在Java EE和Spring之间做出选择,因为EJB只是Java EE的一部分,它还包括其他组件,如JMS,Servlets,JSP,JSF,CDI等.早期(J2EE) 1.4)Java企业版的编程模型存在很多缺陷和缺陷,但最重要的是它使用大量的样板代码和大量的xml配置,既乏味又冗长.Spring被引入作为替代框架,有利于约定优于配置原则.换句话说,在Spring中,如果需要,可以重新配置一些合理的默认值.Java EE 5引入了重大更改,采用了Spring提供的相同的约定配置原则,大大减少了使事情进行所需的代码量和复杂性,因此在这方面,Spring不再具有任何明显的优势.

同样重要的是要记住Java EE只是一个规范.要构建一个真实世界的应用程序,你需要一个实现,今天有很多它们 - Glassfish,JBoss,TomcatEE等都提供了不同的Java EE规范实现,引入了额外的复杂性 - 我的意思是,现在你必须选择哪个Java EE实现选择.你可以使用来自单一来源的Spring来对抗它.

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

但Java EE仍然缺乏Spring的一个领域是可测试性.为EJB编写单元测试并不容易 - 为此,您必须使用特殊的第三方框架(Arquillian)并在测试中编写一些样板代码(例如,用于构建测试部署包并将其部署到容器上等) ).实际上,Java EE缺乏对开箱即用的EJB测试的支持.相比之下,Spring考虑到了可测试性和TDD.测试Spring bean很容易,因为Spring包括对应用程序所有部分的测试(单元测试,集成测试)以及模拟的捆绑支持.

  • 谢谢您的回答,非常有帮助 (2认同)