我的团队正在开发一种带有 Web 前端的面向服务的新产品。在讨论我们将使用哪些技术时,我们决定运行 JBoss 应用程序服务器、Flex 前端(可能使用 Adobe AIR 进行桌面部署)以及连接客户端和服务器的 Web 服务。
在为我们的业务逻辑使用哪种服务器技术时,我们陷入了僵局。最大的争论是在 EJB3 和 Spring 之间,我们最关心的是可扩展性和性能,以及代码库的可维护性。
这是我的问题:
- 支持或反对 EJB3 与 Spring 的论据是什么?
- 我会遇到哪些陷阱?
- 我在哪里可以找到好的基准信息?
最佳答案
基于性能的 EJB3 和 Spring 之间不会有太大的区别。我们选择 Spring 的原因如下(问题中未提及):
- Spring 插入架构朝着更容易支持单元测试的方向发展。例如,注入(inject)一个模拟 DAO 对象对您的业务层进行单元测试,或者利用 Spring 的 MockHttpRequest 对象对一个 servlet 进行单元测试。我们为单元测试维护一个单独的 Spring 配置,允许我们将测试隔离到特定的层。
- 最重要的驱动程序是兼容性。如果您需要支持多个 App Server(或最终希望选择从 JBoss 迁移到 Glassfish 等),您基本上将随身携带容器(Spring),而不是依赖于不同实现之间的兼容性EJB3 规范。
- Spring 允许选择持久性、对象远程处理等技术。例如,我们还使用 Flex 前端,并使用 Hessian 协议(protocol)在 Flex 和 Spring 之间进行通信。
关于java - 我应该为我的业务层使用 EJB3 还是 Spring?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68527/