Seam之初体验2011-12-29 BlogJava Max从本文开始,我将会开始一个全新系列的文章——《Seam系列》。如果有关心我的博客的朋友,应该知道早前一年多的时间我都使用Seam使用开发项目,可以算得上是略有小成。因此,我很希望与大家分享一下Seam的经验。为什么要使用Seam这个问题Seam的官方文档以经做了很好的回答。为了方便不喜欢看文档的朋友(不过,可以负责任地告诉你“这不是一种好习惯!” :-),如果你希望完整地了解一门技术,反复阅读文档是必不可少的。甚至可能需要查看源代码,当然这是对开源的技术而言),我将其中一些要点抽取出来:只有一种“工具” Seam中的表现层组件和业务逻辑组件之间并没有区别。 你可以根据你设计的任何架构给应用程序进行分层,而不是强制将你的应用程序逻辑硬塞进一个由你目前在使用的任何框架组合所强加给你的不适当的分层配置中。将JSF与EJB 3.0整合 Seam将JSF和EJB3的组件模型合二为一,消除了胶合代码,使得开发者专注于业务问题。集成AJAX Seam支持两个最好的、开源的基于JSF的AJAX解决方案:JBoss RichFaces和ICEfaces。将业务流程作为首要的基础建筑 Seam可以选择通过jBPM提供透明的业务流程管理。声明式状态管理 声明式应用程序状态管理通过Seam定义的丰富的context model(上下文模型)而成为可能。Bijection(双向注入) Bijection(双向注入)和IoC的不同之处在于它是动态的、语境相关的以及双向的。工作区(Workspace )管理和多窗口浏览 Seam应用程序让用户自由地在多个浏览器窗口中切换,每个窗口都与一个不同的、安全隔离的对话关联。多些注解(Annotation),少些XML 这让你摆脱了对繁琐的JSF managed bean(JSF受管bean)的配置,减少了所需的XML,只剩下那些真正属于XML的信息(JSF导航规则)。集成测试轻而易举 Seam组件作为POJO,天生就是可以进行单元测试的。规范也非尽善尽美 在规范中有许多漏洞(例如,GET请求的JSF生命周期中的局限性),Seam修正了这些漏洞。Web应用程序不只是服务HTML页面 Seam为持久化集成了JPA和Hibernate 3,为轻量化的异步性集成了EJB Timer Service和Quartz,为工作流集成了jBPM,为业务规则集成了JBoss规则,为电子邮件集成了Meldware Mail,为完整的文本搜索集成了Hibernate Search和Lucene,为消息集成了JMS,以及为页面片断捕捉集成了JBoss Cache。