阅读了《Groovy In Action》一书,做了网上调研,经历了最初的FUD(Fear, uncertainty, doubt )过程,最终决定使用Groovy代替Java来写JBoss Seam组件。
本文是近一个月来, 使用Groovy编程的几点粗浅的体会。最后展示了一些Groovy源代码。
1.好处
(1)代码变得非常简洁,能够直接把程序的意图表现出来。同样的功能,很难想象再回到Java去编程。
(2)闭包(Closure)的使用,大大简化了某些算法,尤其是集合操作,开发效率大为提高。
(3)可以用JavaScript的感觉去写Groovy程序,因为两者都属于动态类型语言。
2.不便之处
(1)Groovy Eclipse Plugin的当前版本(2008-01-03发表)的编译速度还比较慢,功能上太弱。希望在未来的几个月中,这种情况能得到改变。
(2)编译阶段,对方法名引用错误,或者方法传递参数的错误,不再提示,要等到运行时才能发现。
(3)GlassFish中检测不到Groovy编写的类的修改,无法获得自动加载的热部署好处。
3.不确定之处
(1)是否会影响到整个后台程序的运行速度?
(2)是否能被开发团队中其他成员接受和欢迎?
4.Groovy代码展示1:Hibernate实体类
package com.divo.app.domain
import javax.persistence.*
import org.jboss.seam.annotations.*
//网格视图-用户版本
@Entity
@Name("app.myGridView")
@Table(name="app_MyGridView",uniqueConstraints = [
@UniqueConstraint(columnNames =
["viewId", "userId"] )
])
class MyGridView {
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator="appNextId")
@TableGenerator(name="appNextId", table="app_NextId", allocationSize=1)
Long id
@Column(nullable=false)
Long userId
@Column(nullable=false)
Long viewId
@Column(nullable=false,length=4000)
String viewState
}
//EOP
5.Groovy代码展示2:作为JBoss Seam组件的服务类
package com.divo.app.service
import org.hibernate.*
import org.jboss.seam.annotations.*
import org.jboss.seam.security.*
import com.divo.app.domain.*
import com.divo.core.misc.*
import com.divo.core.util.*
@Name("app.appInfoService")
@AutoCreate
class AppInfoService extends BaseService {
String appInfoFileName
def getAppInfo() {
def dir = appInfoFileName?"":AppUtil.getRootDir()
def s = Constants.FILE_SEPARATOR
def fileName = appInfoFileName?appInfoFileName:"app${s}version.txt"
def file = new File(dir+fileName)
def appInfo = new AppInfo()
def count = 0
file.splitEachLine(/\,/){
if (it.size()>1 && count>0) {
appInfo.version = it[0]
appInfo.buildId = it[1]
appInfo.copyright = it[2]
appInfo.productName = it[3]
appInfo.isDebug = (it[6]=="Y" || it[6]=="y")
}
count++
}
appInfo.currentDate = DateTimeUtil.getNowDate()
appInfo.contextPath = appInfoFileName?"":AppUtil.getContextPath()
appInfo
}
}
//EOP
6.Groovy代码展示3:单元测试类
package com.divo.app.service.test
import org.testng.annotations.*
import com.divo.app.service.*
import com.divo.core.util.*
import com.divo.core.misc.*
class AppInfoServiceTest extends AppTestCase {
def _service
@BeforeClass
@Override
void init() {
super.init()
_service = new AppInfoService()
}
@BeforeMethod
@Override
void begin() {
super.begin()
_service.setSession(session)
}
@Test
void canGetAppInfo() {
_service.appInfoFileName = "test//version.txt"
def appInfo = _service.getAppInfo()
def currentDate = DateTimeUtil.getNowDate()
assert appInfo.version=="2.0.0-b1"
assert appInfo.buildId=="2008020112"
assert appInfo.copyright=="fzx"
assert appInfo.productName=="软件问题跟踪系统"
assert appInfo.currentDate==currentDate
}
}
//EOP
分享到:
相关推荐
通过这些知识点,可以更深入地了解JBoss Seam3框架及其在实际项目开发中的应用。需要注意的是,由于文档来源可能涉及到OCR技术转换过程中的文字识别错误,这些知识点的信息可能存在细微偏差。在实际应用中,应以官方...
RichFaces是Seam中的一个增强JSF功能的库,提供了丰富的AJAX支持;JBoss是Red Hat公司开发的应用服务器,它支持并推荐使用Seam框架。 在实际开发中,开发者可以通过这些资源学习如何使用Seam进行组件注入、依赖管理...
《JSF标签》简体中文版.pdf涵盖了JSF的各种组件、转换器、验证器以及与后台数据交互的方法,有助于提升开发者在JSF项目中的效率。 **4. A4J (Ajax for JSF)** A4J 是一个扩展JSF的库,提供了一套AJAX支持,允许...
通过这些实例,读者可以学习到如何在实际项目中应用Seam框架,解决常见的问题,并优化应用性能。书中还详细介绍了Seam的组件模型、依赖注入、转换和验证机制等核心概念,帮助开发者深入理解框架的内部工作原理。 ##...
Seam是一个开源的企业级Java框架,由JBoss公司开发,旨在简化Java EE应用程序的开发。它将多种技术如JavaServer Faces (JSF),Java Persistence API (JPA),EJB 3,Inversion of Control (IoC)和Aspect-Oriented ...
【JBoss教程及深入浅出JBoss+Seam】是一个针对企业级Java应用服务器JBoss的深度学习资源,其中包含了两个主要部分:JBoss教程和对JBoss与Seam框架结合使用的详细介绍。这两个主题都是Java开发人员在部署和管理企业...
在Seam中,一切皆组件,无论你是倾向于采用分层架构(如J2EE)还是简单的架构,都可以得到支持。组件可以是无状态或有状态的,有状态的组件可与多种预定义上下文关联,如业务流程上下文或方法上下文,这为Seam赋予了...
整理自jboss seam 中文站,压缩为chm格式,便于广大jboss seam爱好者阅读,所有版权归jboss seam中文站所有。
Jboss 7 + EJB 3.0 + Eclipse环境配置
在接下来的学习过程中,您可以利用这个环境来实践各种 JBoss Seam 示例项目,从而深入理解其特性和应用场景。同时,随着实践经验的积累,您还可以尝试使用 JFreeChart 和 Flex 等工具进一步丰富您的应用,提高用户...
7. **在JBoss 4.0下使用Seam**:由于JBoss 4.0版本较老,因此需要特别注意兼容性问题。 #### 第三章:上下文相关的组件模型 这一章深入探讨了Seam中的核心概念——组件模型,以及各种不同的上下文环境。 1. **...
【JBoss Seam】是Java企业级应用开发框架,它整合了JSF(JavaServer Faces)、EJB(Enterprise JavaBeans)3.0、JPA(Java Persistence API)以及一系列其他技术,为开发人员提供了一个强大的全栈式解决方案。Seam...
JBoss Seam被称为是“Java EE 5.0的一个轻量级的框架”,这个表述意味着Seam是建立在Java EE 5.0之上的一层,为开发者提供了一个更加统一且易于理解的编程模型。Seam的目标是简化企业级Web应用的开发,特别是对于...
- Seam中的依赖注入和事件处理 - 如何利用Seam进行安全性和国际化设置 - 例子和实战项目,展示如何结合使用这些技术构建实际应用 掌握这些知识点后,开发者将能够高效地构建出功能丰富、用户体验优秀的Java Web应用...
- **创建项目**:在 Eclipse 中创建一个新的 Java 项目。 - **导入模板**:使用 seam-gen 生成的模板初始化项目。 **2.3 创建新动作** - **定义动作**:通过 seam-gen 自动生成的动作模板定义新的动作类。 - **...
作为Hibernate的创造者Gavin King的作品,Seam在设计之初就考虑到了ORM的最佳实践,它在整个Web交互生命周期中管理持久上下文,避免了DTO等技术的使用,提高了代码的整洁性和可维护性。 总的来说,JBoss Seam是一个...
- **使用JSF 1.2 RI**:提供了如何在JBoss平台上使用JSF 1.2参考实现来部署和运行Seam应用的具体步骤。 #### 三、结语 通过以上内容的学习,读者可以全面了解JBoss Seam框架的核心功能和技术特点,掌握如何使用...