Java SEAM有什么缺点吗?
作为一名java web应用程序开发人员,我去年使用了JSF(SUN)作为web应用程序的框架。我不得不说我很喜欢使用它,它使开发更容易 最近,我读了很多关于JBossSeam的好东西,但是我仍然没有遇到一个使用过它的人。从我所读到的内容来看,SEAM似乎是JSF的下一步Java SEAM有什么缺点吗?,java,jsf,seam,Java,Jsf,Seam,作为一名java web应用程序开发人员,我去年使用了JSF(SUN)作为web应用程序的框架。我不得不说我很喜欢使用它,它使开发更容易 最近,我读了很多关于JBossSeam的好东西,但是我仍然没有遇到一个使用过它的人。从我所读到的内容来看,SEAM似乎是JSF的下一步 因此,我的问题是,对于使用SEAM的您来说:当您在哪里使用此技术时,您遇到过任何缺点吗?你觉得使用它很自然吗?我觉得很自然,使用注释让生活更轻松。我甚至无法想象使用getAttribute/getParameter框架。一个缺
因此,我的问题是,对于使用SEAM的您来说:当您在哪里使用此技术时,您遇到过任何缺点吗?你觉得使用它很自然吗?我觉得很自然,使用注释让生活更轻松。我甚至无法想象使用getAttribute/getParameter框架。一个缺点是SeamGen还不能与Maven一起工作(但是Seam3将基于Maven)。我认为Seam让您专注于您想要实现的目标,而对于其他框架,您必须考虑如何做到这一点。您是否尝试过使用javascript/prototype/jquery实现Ajax?与SeamAjax按钮和方法调用以及重播内容相比,这真的很痛苦。对于seam和Rich Faces来说,根本不需要Javascript。对我来说,这是我使用过的最好的框架。任何像SEAM或Grails这样的框架的优点都是它具有更高的抽象级别。它会为您处理潜在的细节,如果设计和编写得好,会让事情变得更容易 像SEAM或Grails这样的框架的缺点是它对您隐藏了很多细节。如果你不知道下面发生了什么,你会发现自己陷入了一个麻烦的世界,如果你陷入困境,对为你生成的代码一无所知 另一个缺点是,他们在模型中建立的假设可能并不总是你想要的。但是改变他们意味着打破他们为你制定的道路,这并不容易
我的建议是使用这个框架并欣赏它带来的好处,但不要把它们当作停止了解下面发生的事情的借口。做一个不用框架就可以手工编写整个内容的人,但选择使用它来利用它提供的优势。说“Seam是JSF的下一步”是不正确的。Seam不必使用JSF作为视图层。它也可以使用或 然而,当与JSF一起使用时,它在简化方面做得非常好。您的XML配置比标准JSF少,我经常忘记JSF在EL中没有对话上下文或参数化方法调用之类的东西。例如:
<h:commandButton action="#{myBean.sayHello('damo')}" value="hello"/>
它很容易使用,而且在任何地方使用POJO的能力都非常解放。它最大的缺点是与JSF相关的:
- 过分依赖HTTP POST(这
并不总是解决问题)s:按钮/链接
- 大量的javascript
- 对getter/setter的调用过多
- 难看的HTML;等
我认为这是下一步。我喜欢JSF,不久前我评估了Seam。JSF是一个web UI框架,而Seam是一个更通用的web应用程序框架,它不仅集成了JSF,还集成了会话上下文、工作流(jBPM)和对象持久性(最好是EJB3)。我第一次被Seam吸引是因为广告中的自动生成脚手架,但我从未将其用于我的企业数据模型。从那以后,我对Spring框架和Spring JSF越来越感兴趣。对我来说,它更加模块化,如果使用iBATIS,它只需要像Tomcat这样的servlet容器,而不需要像JBoss这样的JavaEE容器。春天已经存在了更长的时间,并且有更多的思想分享
另外,ICEfaces与JSF和facelets的结合非常好,无论是否使用Seam或Spring等应用程序框架,ICEfaces都能很好地工作。我在正在进行的ICEfaces大型项目中使用了Seam。Seam当然比使用普通JSF要好得多(请参阅Damo发布的链接,上面有几个答案) 然而,我记得的一些问题是:
- 单元测试:要让SeamTest正常工作,特别是在持续集成构建中,是很困难的,请在web上搜索“SeamTest问题”。另请参见:
- 开发人员可以通过多种方式完成任务,并且没有太多的最佳实践记录在案。因此,您必须花时间找出最适合您的项目团队的方案。例如,在实现表单时,以下是可能的标记(请注意,其中一些重叠):
- 性能是值得怀疑的,尤其是对于IceFaces,而且,为了做正确的事情,您需要Seam的“专家级”知识,默认方式会让您陷入麻烦。有关详细信息,请参阅本文:
- 由于Seam 3即将推出,并且应该使用2个新规范(JSF 2和WebBeans),这就给Seam 2上的项目带来了问题,以及需要多长时间才能稳定下来
- 学习曲线。IMHO seam试图做的太多了,给你一些包装,比如iText、Quartz、JExcel、jBPM等。seam与第三方框架的集成预计比最新版本落后一步。例如,我们必须直接集成jBPM,因为我们需要一些最新的特性
- 可能是因为JPA 1.X中缺少条件查询,所以实现动态搜索屏幕(用户在其中填写大量筛选选项,您必须生成动态HQL)的方式非常优雅,这是在使用推荐的“Seam Application Framework”EntityQuery类时,请参阅下面的链接以获取简单示例,但是你可以想出一个好主意