1.4第一个用Seam实现的应用
为了讲解Seam的一些核心工作原理,我将带你从头到尾地看一个管理高尔夫秘诀(golf tips)集合的基本应用。你不用担心所看到的不能完全理解,你主要关注的是Seam如何依靠注解定义组件、如何通过统一组件模型将应用层整合到一起以及由于配置特例(configuration by exception)使得在业务逻辑方面达到了“信号噪声比”(译者:言外之意应该是说通过配置例外使得开发者可以把精力主要放到业务上)。在这个例子中我介绍了大量的Seam特性,所以你不要认为要使用Seam就得掌握所有的这些技术。
我们都想成为一个更好的高尔夫球手(至少,那些喜欢用运动来折磨自己的人是这样的)。了解些打高尔夫的秘诀可以使你你在一轮当中少击几次球。为了跟踪记录你从文章或者从朋友的建议获得的秘诀,我们需要马上就拼凑一个能够从数据库读取这些秘诀的Seam应用。在这个例子中除了不用考虑部署应用之外,目前你只有少许文件,这些文件可以生成一个能够用的应用。
1.4.1实体类作为后端beans
我先从GolfTip JPA实体类开始讲解,如列表1.1所示。在Seam应用中,实体类有两者用途。其主要作用就是应用程序与数据库之间传输数据。所谓的对象关系映射机制并不是Seam本身的一部分。这部分工作要么由JPA处理要么由Hibernate处理,但是在第八章你可以看到Seam可以启动ORM运行时并且管理ORM持久化管理器的生命周期。
在Seam应用中实体类的第二个作用是作为form “backing” beans(和Struts的ActionForm相似)捕获用户的输入,因此就不需要一个shallow “backing” bean类(译者:应该是不需要值对象了)。如果在类定义中有@Name注解,该类就会成为JSF视图中使用的候选者,图1.1中的GolfTip类已经满足了这个条件。然后你可以将表单输入直接绑定到实体类的属性上,由JSF处理必要的转换和验证。
带有@符号前缀的关键词是Java 5注解。加粗的@Name注释①是一个Seam注解,它表示将GolfTip类注册为名称是tip的组件。无论什么时候从Seam容器中请求上下文变量tip,Seam就会创建一个GolfTip类的新实例并将这个实例变量tip绑定到对话(conversation)上下文中(实体类的默认范围),并返回所请求的实例。
这个类中的其他注解和JPA相关。@Entity注解②把GolfTip类与同名的数据库表相关联。@Id注解③告诉JPA那个属性被用作主键。@GeneratedValue注解③表明由数据库自动生产主键。所有其他类属性(author、category、context)配置例外(configuration by exception)语法将被自动映射到GolfTip表中各个相同名称的字段。
如你所见,使用@Name注解使你少一份担忧(就是JSF受管bean功能和其冗长的XML方言)。远离受管bean配置是转移到Seam组件的初期的好处之一。另一个采用Seam的显著优点就是能够将UI命令组件的action绑定到一个事务性业务对象的方法上。
1.4.2 一个全能的(all-in-one)组件
有了实体类,在Seam中就没有必要再创建一个受管bean作为在JSF页面和服务对象的中间人。相反,服务对象可以直接对UI中的一个动作做出响应。起初,你可能认为这不是个好注意,因为它好像会使UI和应用逻辑之间紧耦合。Seam通过扮演中间者角色防止了这种耦合。因此,action组件不必一定要包含对JSF资源的单个引用。实际上,在第三章你会发现方法的返回值不必作为导航规则的逻辑结果——这是JSF受管bean的典型要求——因为Seam可以计算出任意的EL值表达式。
在高尔夫秘诀应用中,图1.2中的TipAction类使用@Name注解将其声明为Seam组件,并且能够将其方法绑定到UI控件。在高尔夫秘诀接口中它处理了添加和删除操作。
像GolfTip实体类,@Name注解①将TipAction类标记为一个Seam组件,这次将其划分到event context(对于JavaBean组件是默认范围)。将@In注解放到类②的某个字段上可以注入其他组件到GolftTip类,所以可以使其与其他组件相分离,这种机制被称为双向注入。在这个例子中,有两个依赖组件JPA EntityManager和Seam的内建JSF消息管理器。这个组件也准备了一个GolfTip对象集合用于JSF视图中③;捕获用户在集合中选择的GolfTip,这样在处理事件的两个方法中以及后续视图④中都可以获取该对象;在JSF状态消息⑤中插入当前激活的GolfTip。
TipAction组件在一个有限的空间塞进了许多功能。我想让你了解的就是除了注解,在这个类中几乎没有基础结构代码的痕迹。除了创建状态消息,你唯一需要写的代码仅是读取、持久化以及使用JPA EntityManager实例从数据库中删除tips。可能是最好将这段代码放在一个也可以是Seam组件的数据访问对象(DAO)中,但是Sam不强制要求你使用这个结构。Seam的关注点是节约,就像这个例子中所示,没有任何用来获取请求参数或者设置请求或会话属性的Servlet API调用。取而代之的是,组件完全由业务逻辑组成。
seam in action 第一部分 1.4后半部分发到博客频道了,没发在java论坛。
- 大小: 106.3 KB
- 大小: 147.3 KB
- 大小: 118.2 KB
分享到:
- 2009-01-20 21:47
- 浏览 1309
- 评论(0)
- 论坛回复 / 浏览 (0 / 2260)
- 查看更多
相关推荐
本资料集合包括《Seam in Action》和Seam官方参考手册,是深入学习Seam框架的理想资源。 ### 《Seam in Action》 这是一本由Dan Allen和Davin Bunk编写的专业书籍,详细介绍了Seam框架的各个方面。这本书适合已经...
《Seam in Action》是一本专门探讨Seam框架的书籍,该书分为中文和英文两个版本,对于初学者和有经验的开发者来说都是一个宝贵的资源。Seam是一个强大的Java EE框架,它集成了多种技术,如JavaServer Faces (JSF)、...
Seam in Action 是一本关于Seam框架的专业书籍,中文版的第一章主要介绍了Seam的核心理念和价值。Seam是一个革命性的Java EE应用框架,旨在通过整合现有的Java企业级技术,如EJB3、JSF、JPA和Hibernate,提供一个...
《Seam in Action》这本书是关于JBoss Seam框架的一部权威指南,由业界专家撰写,旨在帮助开发者深入了解和高效使用Seam。JBoss Seam是一个开源的企业级Java框架,它将JavaServer Faces (JSF)、Java Persistence API...
- **第1章:Seam统一了Java EE 3**(P1) - 介绍Seam如何整合Java EE 3标准中的技术,如JSF、EJB 3等。 - 讲解Seam如何简化企业级应用开发流程。 - **第2章:将Seam组件投入使用**(P29) - 介绍如何创建和管理...
- **第1章:Seam统一Java EE 3**:介绍 Seam 如何整合 Java EE 3 技术,形成统一的应用开发平台。 - **第2章:将Seam-Gentoo投入工作**:展示如何在 Gentoo Linux 系统上安装和配置 Seam,进行实际项目开发。 #### ...
《Seam In Action》是一本专注于Java企业级应用开发框架Seam的专业著作。Seam是由JBoss公司开发的一个集成框架,旨在简化Java EE(Java Platform, Enterprise Edition)应用的开发,尤其是在处理会话管理和组件集成...
### Seam in Action 第14章:管理业务流程 #### 知识点一:理解业务流程管理(BPM) - **定义与概念**:业务流程管理(Business Process Management, BPM)是一种用于模型化、自动化和优化业务流程的方法。它旨在...
《Seam in Action》这本书深度探讨了JBoss Seam这一轻量级Java EE 5.0框架,它旨在简化企业级应用程序的开发,提供了一种整合各种技术的强大方式。Seam的核心理念是消除Java EE组件之间的摩擦,使得开发过程更为流畅...
seam in action的源代码 Seam in Action - Book source code ================================= First print release - Sept 2008 Book: Seam in Action, Manning Publications Author: Dan Allen Book site: ...
这一部分强调了Seam如何在JSF的基础上进行了大量的改进和增强。 #### 二、Seam基础 - **Seam生命周期**:Seam定义了一套独特的生命周期模型,该模型基于组件和上下文的概念,使得开发人员能够更好地理解和控制应用...
- **书籍资料**:如《Seam in Action》等专业书籍是学习Seam的重要资源。 #### 七、总结 Seam作为一款强大的Java EE框架,通过其对Java EE 3技术的深度整合和创新应用,大大提升了开发效率和应用质量。无论是对于...
《Seam in Action》是一本深入探讨Seam框架的书籍,由Dan Allen撰写,并于2008年由Manning出版社出版。Seam是JBoss的一个项目,它是一种用于简化Java EE应用程序开发的框架,旨在提供一种更为简洁、高效且易于使用的...
### Seam in Action – MEAP – 2008 #### 关键知识点概述 **JBoss Seam** 是一个针对 Java EE 的应用框架,旨在通过统一组件架构简化 Web 应用程序的开发过程。Seam 构建在 EJB 3 规范的基础上,充分利用了该规范...