论文部分内容阅读
摘要:针对企业应用系统开发采用的轻量级Java EE框架的复用与维护问题,在对Hibernate、Spring和Struts三个开源框架分析的基础上,提出了整合三个框架的配置方案。并设计一个基于此方案的快速开发框架。实现的快速开发框架能自动将零散的框架自动集成,并根据数据表及代码模板生成各逻辑层的初始代码,为新项目生成一个稳定的初始开发平台。
关键词:Java EE;快速框架;代码自动生成
中图分类号:TP311 文献标识码:A文章编号:1007-9599 (2011) 20-0000-02
A Speed Development Framework of Lightweight Java EE
Ye Wenlai
(School of Computer Engineering,Jimei University,Xiamen361021,China)
Abstract:In order to improve code reuse and maintenance of lightweight Java EE framework which used in the development of enterprises system,this paper proposes a method to integrate the three open source frameworks including Hibernate,Spring and Struts after thorough analysis.A speed development framework is created based on this method.It integrates each separate framework automatically and also generates the initial code for each logic layer according to data table and code template,build a stable development platform for new project.
Keywords:Java EE;Speed Development Framework;Code Generation
Sun公司推出的Java EE(Java Platform)平台[1]已经日趋成熟,Java EE得到了广泛的应用。但是Java EE应用的开发比较复杂。在开源领域涌现出许多优秀的轻量级Java EE框架,将Spring、Struts和Hibernate整合,用Struts来架构表现层,Spring构建业务层,让Hibernate承当数据持久层职责,是目前最典型的应用[2]。
持久层采用Hibernate[3]作为ORM框架,处理数据库操作。表现层采用了Struts[4]作为MVC解决方案,主要用于处理页面请求。当页面请求到达时,Struts自动调用Action类的方法,Action类的方法中可封装Service层的方法。业务层是整个系统的核心,由Spring[5]框架管理,主要由工厂类(Service Factory)和一系列服务接口及其实现类组成。虽然Struts、Spring和Hibernate同属Java EE领域的轻量级框架,但是各自之间的技术存在差异,开发人员往往需要花费大量时间整合:搭建时需要引入很多依赖的包文件,而且各个框架的包文件存在着重复和冲突,需要开发人员耐心的调试。除此之外,框架的配置文件数量繁多,正确配置也是一件让人头疼的事。而且每开发新项目时又得重新配置。
本文实现的轻量级Java EE快速开发框架的目标是根据一般企业级应用系统的体系架构以及项目的组织结构,自动建立集成Hibernate、Spring和Struts框架模板项目,形成一个以Spring为核心的项目脚手架[6],并且提供内置一个代码生成器,根据数据库中已经设计好的数据表结构辅助按照Free Marker模板文件[7]快速生成表现层、业务层和数据持久层的辅助代码,包括对表格数据实现基本的增加、删除、修改和查询的JSP页面。利用快速开发框架,开发人员通过简单的操作快速搭建一个完整稳定的项目开发平台,并生成项目的基础代码。在此基础上添加或调整模块的逻辑代码,不仅提高了开发速度,减少开发人员在项目开始初期重复编码活动,而且规范项目结构以及编码风格,让他们有更多的时间关注业务领域的问题。
一、快速开发框架设计
(一)设计思路
快速开发框架主要由框架整合和基础代码自动生成两部分组成,框架采用Apache Ant[8]自动化构建技术,根据预先定义好的项目模板,自动整合Spring、Struts和Hibernate及项目中常用的其他插件,生成项目初始框架:引入各框架所依赖的包文件,并生成各框架的初始化XML配置文件,并创建项目的目录结构,为后继的代码自动生成做准备。
在此基础上,代码生成模块使用JDBC技术连接数据库,从指定数据库中查询出需要生成代码的数据表,根据Free Marker技术定义的模板文件生成各个部分不同逻辑层的基础代码,建立项目开发的初始环境。框架总体体系如图1所示。
图1.快速开发框架总体体系结构
实现的快速框架包含5个大类子目录:src、plugins、template、Web、generator和一个Ant项目部署文件和属性文件。各大类子目录又包含许多子目录,各级目录存放不同功能和用途的代码、插件和模板。
(二)Ant框架整合及插件安装体系结构
使用Ant技术进行框架整合时,最重要的是编写Ant构建配置文件。文件定义了构建过程,默认命名为build.xml。Ant构建配置文件本质是XML文件。每个构建文件定义一个唯一的项目(Project元素)。每个项目下可以定义多个目标(由target元素配置)。每個目标中可以定义多个子任务,同时还需定义任务的执行序列。Ant构建目标时按照配置文件定义执行构建任务。[8]。
用户可以重新改写快速开发框架的build.xml文件配置,根据项目需要选择集成的框架。
(三)基于Free Marker模板引擎代码生成器体系结构
快速开发框架使用Free Marker技术定义代码的模板文件。Free Marker是一个模板引擎,一个基于模板生成文本输出的通用工具。代码生成模块采用JDBC技术,扫描指定数据库中的表,利用Database Meta Data接口和Result Set Meta Data接口读取表结构信息,将解析出来的表信息匹配代码模板文件,逐一生成代码。
代码生成器搜索数据库自动匹配模板文件,生成对应的Action、Dao、Model、Manager以及JSP页面代码。因此,各个部分都需要事先定义出模板文件。由于这些代码文件分属于架构的不同逻辑层,在项目中存放的位置也不同。根据不同的数据库表名,生成器按照路径模板自动归类存放。
Action是Struts框架页面请求的处理逻辑类,根据通用Action类思想设计其代码模板,模板结构如下所示:
package ${basepackage}.action;
//…
<#include "/java_imports.include">
public class ${className}Action extends BaseStruts2Action implements Preparable,ModelDriven{
protected static final String QUERY_JSP = "${jspFileBasePath}/query.jsp";
//….
<#if className = "UserInfo">
protected static final String LOGIN_JSP = "/login.jsp";
protected static final String WELCOME_JSP = "/welcome.jsp";
#if>
//…
private ${className}Manager ${classNameLower}Manager;
private ${className} ${classNameLower};
<#list table.compositeIdColumns as column>
${column.javaType} id = null;
#list>
/** 執行搜索 */
public String list() {
PageRequest
关键词:Java EE;快速框架;代码自动生成
中图分类号:TP311 文献标识码:A文章编号:1007-9599 (2011) 20-0000-02
A Speed Development Framework of Lightweight Java EE
Ye Wenlai
(School of Computer Engineering,Jimei University,Xiamen361021,China)
Abstract:In order to improve code reuse and maintenance of lightweight Java EE framework which used in the development of enterprises system,this paper proposes a method to integrate the three open source frameworks including Hibernate,Spring and Struts after thorough analysis.A speed development framework is created based on this method.It integrates each separate framework automatically and also generates the initial code for each logic layer according to data table and code template,build a stable development platform for new project.
Keywords:Java EE;Speed Development Framework;Code Generation
Sun公司推出的Java EE(Java Platform)平台[1]已经日趋成熟,Java EE得到了广泛的应用。但是Java EE应用的开发比较复杂。在开源领域涌现出许多优秀的轻量级Java EE框架,将Spring、Struts和Hibernate整合,用Struts来架构表现层,Spring构建业务层,让Hibernate承当数据持久层职责,是目前最典型的应用[2]。
持久层采用Hibernate[3]作为ORM框架,处理数据库操作。表现层采用了Struts[4]作为MVC解决方案,主要用于处理页面请求。当页面请求到达时,Struts自动调用Action类的方法,Action类的方法中可封装Service层的方法。业务层是整个系统的核心,由Spring[5]框架管理,主要由工厂类(Service Factory)和一系列服务接口及其实现类组成。虽然Struts、Spring和Hibernate同属Java EE领域的轻量级框架,但是各自之间的技术存在差异,开发人员往往需要花费大量时间整合:搭建时需要引入很多依赖的包文件,而且各个框架的包文件存在着重复和冲突,需要开发人员耐心的调试。除此之外,框架的配置文件数量繁多,正确配置也是一件让人头疼的事。而且每开发新项目时又得重新配置。
本文实现的轻量级Java EE快速开发框架的目标是根据一般企业级应用系统的体系架构以及项目的组织结构,自动建立集成Hibernate、Spring和Struts框架模板项目,形成一个以Spring为核心的项目脚手架[6],并且提供内置一个代码生成器,根据数据库中已经设计好的数据表结构辅助按照Free Marker模板文件[7]快速生成表现层、业务层和数据持久层的辅助代码,包括对表格数据实现基本的增加、删除、修改和查询的JSP页面。利用快速开发框架,开发人员通过简单的操作快速搭建一个完整稳定的项目开发平台,并生成项目的基础代码。在此基础上添加或调整模块的逻辑代码,不仅提高了开发速度,减少开发人员在项目开始初期重复编码活动,而且规范项目结构以及编码风格,让他们有更多的时间关注业务领域的问题。
一、快速开发框架设计
(一)设计思路
快速开发框架主要由框架整合和基础代码自动生成两部分组成,框架采用Apache Ant[8]自动化构建技术,根据预先定义好的项目模板,自动整合Spring、Struts和Hibernate及项目中常用的其他插件,生成项目初始框架:引入各框架所依赖的包文件,并生成各框架的初始化XML配置文件,并创建项目的目录结构,为后继的代码自动生成做准备。
在此基础上,代码生成模块使用JDBC技术连接数据库,从指定数据库中查询出需要生成代码的数据表,根据Free Marker技术定义的模板文件生成各个部分不同逻辑层的基础代码,建立项目开发的初始环境。框架总体体系如图1所示。
图1.快速开发框架总体体系结构
实现的快速框架包含5个大类子目录:src、plugins、template、Web、generator和一个Ant项目部署文件和属性文件。各大类子目录又包含许多子目录,各级目录存放不同功能和用途的代码、插件和模板。
(二)Ant框架整合及插件安装体系结构
使用Ant技术进行框架整合时,最重要的是编写Ant构建配置文件。文件定义了构建过程,默认命名为build.xml。Ant构建配置文件本质是XML文件。每个构建文件定义一个唯一的项目(Project元素)。每个项目下可以定义多个目标(由target元素配置)。每個目标中可以定义多个子任务,同时还需定义任务的执行序列。Ant构建目标时按照配置文件定义执行构建任务。[8]。
用户可以重新改写快速开发框架的build.xml文件配置,根据项目需要选择集成的框架。
(三)基于Free Marker模板引擎代码生成器体系结构
快速开发框架使用Free Marker技术定义代码的模板文件。Free Marker是一个模板引擎,一个基于模板生成文本输出的通用工具。代码生成模块采用JDBC技术,扫描指定数据库中的表,利用Database Meta Data接口和Result Set Meta Data接口读取表结构信息,将解析出来的表信息匹配代码模板文件,逐一生成代码。
代码生成器搜索数据库自动匹配模板文件,生成对应的Action、Dao、Model、Manager以及JSP页面代码。因此,各个部分都需要事先定义出模板文件。由于这些代码文件分属于架构的不同逻辑层,在项目中存放的位置也不同。根据不同的数据库表名,生成器按照路径模板自动归类存放。
Action是Struts框架页面请求的处理逻辑类,根据通用Action类思想设计其代码模板,模板结构如下所示:
package ${basepackage}.action;
//…
<#include "/java_imports.include">
public class ${className}Action extends BaseStruts2Action implements Preparable,ModelDriven{
protected static final String QUERY_JSP = "${jspFileBasePath}/query.jsp";
//….
<#if className = "UserInfo">
protected static final String LOGIN_JSP = "/login.jsp";
protected static final String WELCOME_JSP = "/welcome.jsp";
#if>
//…
private ${className}Manager ${classNameLower}Manager;
private ${className} ${classNameLower};
<#list table.compositeIdColumns as column>
${column.javaType} id = null;
#list>
/** 執行搜索 */
public String list() {
PageRequest