12

Seam 与 Spring 相比有哪些优点/缺点?为什么我要使用 Seam 来代替 Spring?

有什么可以在 Seam 中完成而在 Spring 中无法完成的事情?在 Spring 中有什么是 Seam 无法完成的?

有状态/无状态架构呢?我是 Spring 用户,所以我自然有偏见。

4

5 回答 5

22

为什么是春天?

  • 更清洁的代码
  • 简化的应用程序配置
  • 与流行的开源产品完美集成
  • 一流的 AOP 支持
  • 企业级安全:Acegi
  • 高度灵活的 MVC
  • 抽象数据访问(JDBC 可以)
  • 没有 EJB 的企业 Java
  • 测试很容易

为什么是缝?

  • 无缝合并 Java EE 5 标准(EJB 3.0、JPA、JSF、Annotation)
  • 有状态的设计
  • 双射
  • 集成 Ajax(ICEfaces 和 Ajax4JSF)
  • 业务流程集成 (jBPM)
  • 业务规则集成 (Drools)
  • 工作区管理
  • 交付完整的堆栈(来自 JBoss 和 RedHat)
  • 接缝文本和 EL 增强功能
  • 可能会成为标准(JSR-299:Web Beans)

来自框架死斗:Spring vs Seam。托马斯 Wiradikusuma(春季)。约书亚杰克逊(接缝)。Java 用户组印度尼西亚。贾木 07.03。2007 年 3 月 17 日的演示文稿在这里

于 2009-06-06T03:28:34.577 回答
5

虽然seam确实比spring有很多优势,但是有一个神奇的词真的很值得关注,那就是PERFORMANCE!!!如果您不担心性能问题,我会选择接缝。另一方面,如果您希望您的应用程序尽可能快并且您的硬件有限,我会使用 spring。我并不是说你不能用 seam 开发快速的应用程序,但为了做到这一点,你真的需要知道你在做什么。我已经使用了它们(我不是其中任何一个的专家),我发现虽然 spring 需要更多的努力来构建你想要的东西,但最终结果更加灵活并且表现更好。我不认为有什么可以在一个框架中完成而在另一个框架中无法完成的事情,请记住,我不是其中任何一个框架的专家。

于 2011-06-16T09:29:10.213 回答
3

Seam 会给你一个漂亮的,啊,无缝的,组成缝合堆栈的组件之间的集成。一切都很好,只要你保持在那个堆栈内,在接缝模型和 foing 东西内。但是,一旦您开始做一些不寻常的事情,这一切就开始显得不那么令人信服了。

如果不是太笼统,Seam 在这方面非常“微软化”。这不是一件坏事,这只是一个风格问题。Spring 更加开放,需要更多的努力才能开始,但它最终更加灵活,更加开放。

于 2009-06-07T17:22:24.893 回答
2

让我们比较一下两者。

什么是常见的?

两者都是开源的,遵循 MVC 架构并具有基于 servlet 的前端控制器。

Spring MVC 的优点

  • Struts 的扩展。
  • 可以使用 JSP 和 HTML 开发视图。您还可以插入其他的插件,例如 PHP 或速度。
  • 具有大量预定义的控制器。
  • 开箱即用地与 Spring 框架集成。

接缝的优点

  • JSF 的扩展
  • 可以使用 JSF 组件库开发视图。有大量供应商可供选择。
  • 将 JPA 实体与 Web 层集成
  • 基于注释的验证
  • 与 EJB 3.0 集成
  • 提供流程定义的开箱即用的 jBPM 支持。
  • 与 Drools 集成,您可以在其中定义 Web 层业务规则。
  • 良好的社区支持。

结论

由于 Seam 是基于 JSF 构建的,因此它有大量的 UI 组件库可供选择。它更好地重用了 Java EE 堆栈。它预先集成了许多有趣的模块。

Spring MVC 是建立在 Struts 和 Spring 之上的,因此它对 Spring 框架堆栈的重用要比其他的好得多。但是视图是使用JSP构建的,所以我们不得不依赖JSP标签库厂商来构建丰富的组件。

Seam 框架将是一个更好的选择,因为 Spring 框架无论如何都具有足够的可扩展性以供 Seam 使用。

于 2010-03-28T11:48:38.103 回答
2

您可以一起使用 Spring 和 Seam - Spring 用于后端组件,Seam 用于增强 Web 层(JSF/GWT/Wicket)和其他东西。Seam 提供了很多 Spring 功能(即 IoC 容器、事务管理)——在你的项目中你可以决定——使用巫婆实现。有关将 Seam 与 Spring 集成的更多详细信息 - “Seam in Action - 免费奖励章节”

于 2009-09-06T22:22:33.613 回答