Java 我的业务层应该使用EJB3还是Spring?
我的团队正在开发一种带有web前端的新的面向服务的产品。在关于我们将使用什么技术的讨论中,我们决定运行JBoss应用服务器、Flex前端(可能使用AdobeAIR进行桌面部署)和web服务来连接客户端和服务器 在业务逻辑中使用哪种服务器技术时,我们陷入了僵局。EJB3和Spring之间存在很大的争论,我们最大的关注点是可伸缩性和性能,以及代码库的可维护性 以下是我的问题:Java 我的业务层应该使用EJB3还是Spring?,java,performance,spring,ejb-3.0,scalability,Java,Performance,Spring,Ejb 3.0,Scalability,我的团队正在开发一种带有web前端的新的面向服务的产品。在关于我们将使用什么技术的讨论中,我们决定运行JBoss应用服务器、Flex前端(可能使用AdobeAIR进行桌面部署)和web服务来连接客户端和服务器 在业务逻辑中使用哪种服务器技术时,我们陷入了僵局。EJB3和Spring之间存在很大的争论,我们最大的关注点是可伸缩性和性能,以及代码库的可维护性 以下是我的问题: 支持或反对EJB3与Spring的论据是什么? 我希望每个人都有什么陷阱 我在哪里可以找到好的基准信息 我肯定会推荐EJ
- 我希望每个人都有什么陷阱
- 我在哪里可以找到好的基准信息
我肯定会推荐EJB3而不是spring。我们发现它更精简,更易于编写代码,并且得到更好的支持。我在过去使用过Spring,发现它非常混乱,并且没有EJB3(或者我猜在一天结束时是JPA)那样有很好的文档记录
关于春天,我不能说太多,因为我只试了几个星期。但我对它的总体印象很差。这并不意味着它是一个糟糕的框架,但是我们的团队已经发现EJB3对于持久性/业务层来说是最好的。支持或反对EJB3与Spring的论据是什么? Spring始终在创新,并认识到现实世界的约束。Spring为Java1.4应用服务器提供了简单和优雅,并且不需要2004-2006年没有人能够访问的J2EE规范版本。在这一点上,几乎是一场宗教辩论,你可能会被卷入到-Spring+抽象+开源与JavaEnterpriseEdition(JavaEE)5.0规范之间 我认为Spring对JavaEE规范的补充大于竞争。随着曾经是Spring独有的特性继续被应用到规范中,许多人会认为EJB3为大多数内部业务应用程序提供了“足够好”的特性集 每一个都会有什么陷阱? 如果您将其视为持久性问题(Spring+JPA)而不是EJB3,那么您真的没有做出那么大的选择 哪里可以找到好的基准信息?
我已经有一段时间没有关注这部电影了,但它们很受欢迎有一段时间了。似乎每个供应商(IBM、JBOSS、Oracle和Sun)对拥有一个兼容的服务器越来越不感兴趣。从1.3到1.4,认证供应商的列表越来越短。1.5 Java企业版。我认为完全符合所有规范的巨型服务器时代已经结束。我过去使用过非常类似的架构。Spring+Java1.5+ActionScript2/3与Flex数据服务相结合,使得编写代码非常容易(而且很有趣!)。
不过,Flex前端意味着您需要足够强大的客户端机器。基于性能,EJB3和Spring之间不会有太大区别。我们选择Spring的原因如下(问题中未提及):
- Spring推动体系结构朝着更容易支持单元测试的方向发展。例如,注入一个模拟DAO对象来对业务层进行单元测试,或者利用Spring的MockHttpRequest对象对servlet进行单元测试。我们为单元测试维护一个单独的Spring配置,它允许我们将测试隔离到特定的层
- 覆盖驱动程序是兼容性。如果您需要支持多个应用服务器(或者最终希望选择从JBoss迁移到Glassfish等),那么您将基本上随身携带您的容器(Spring),而不是依赖EJB3规范的不同实现之间的兼容性
- Spring允许对持久性、对象远程处理等技术进行选择。例如,我们还使用Flex前端,并使用Hessian协议在Flex和Spring之间进行通信
会话bean主要归结为依赖注入和事务;所以EJB3和Spring在这方面有点相似。Spring的优势在于更好的依赖注入和JMS之类的更好的抽象。显然,EJB3和Spring之间的差距要小得多。这就是说,EJB3现在的一个缺点是,您只能将组件注入到bean中,因此最终可以将组件转换成不需要注入的bean 关于单元测试的争论现在已经无关紧要了——EJB3显然是为了更容易进行单元测试而设计的 上面的兼容性论证也有点不相关:无论您使用EJB3还是Spring,您仍然依赖于3rd p