Rapid-framework

构建最实用的J2EE脚手架

rapid-framework v3.9新版本发布

hi,all

本次新版本发布最主要的更新内容是生成器的加强,并且之前已经发布了rapid-generator独立版.
此次升级保证模板的兼容性.后续rapid-framework的发行版将不直接提供rapid-generator的源码在项目中,以便以后大家编写的模板都可以在一个生成器引擎中运行.
后续计划:
本次发行版本是基于ant构建的最后一个版本,下一版本将迁移至maven构建,并且本次发行已经带了pom.xml文件在项目中,编写好了相关dependency,但只是一个空壳,没有实际作用.

v3.9更新内容:

脚手架相关修改

  • 使用rapid的jsp继承用于网页的布局,目标是替换sitemesh
  • 集成hibernate validator
  • 引用Flash Scope,用于显示消息
  • 将extremetable替换为更简单的simpletable列表分页.
  • dao层查询代码修改,让用户选择是否需要使用xsqlbuilder
  • 加入SharedRenderVariableInterceptor?,用于存放所有视图需要的共享变量
  • 增加HttpInclude?功能,便freemarker,velocity可以完成jsp:include功能
  • PageRequest?现在使用强类型的TableNameQuery?
  • dbunit测试改进
  • flex插件更新至flex4(由随便混混贡献)

生成器相关修改

  • Generator包提供jar包,不直接在项目中使用源代码,以便提供一个统一的生成器引擎,大家编写的模板都可以在生成器上面运行.
  • table变量现在可以通过配置文件自定义配置,具体请查看rapid_generator
  • 增加table变量枚举的生成
  • 生成器配置文件 generator.properties 改名为 generator.xml
  • 生成的代码优化
感谢的人:
随变混混同学,将flex3插件迁移至flex4,个人介绍: 学生,热衷于Java,flex领域的web开发,hhlai1990@gmail.com
其它为rapid提交bug的同学
在线demo:

rapid-framework框架介绍

rapid-framework是一个以spring为核心的项目脚手架(或者称为胶水框架),框架将各个零散的框架(struts,strust2,springmvc,hibernate,ibatis,spring_jdbc,flex)搭建好,并内置一个代码生成器,辅助项目开发,可以生成java的hibernat model,dao,manager,struts+struts2 action类,可以生成jsp的增删改查及列表页面

框架概览

  • Dao: spring_jdbc, hibernate, ibatis2, ibatis3, 可以切换dao组件
  • Dao Helper: 基于dialect的分页(ibatis2, ibatis3, jdbc),动态sql构造工具rapid-xsqlbuilder
  • Web MVC: struts1, struts2, springmvc, springmvc_rest, 可以切换web组件
  • Template: (velocity, freemarker, jsp)的模板可以相互继承, velocity及freemarker可以实现模板之间的管道操作
  • 分页组件: extremeTable, rapid-simpletable
  • UI: rapid-validation表单验证, My97DatePicker?日期控件
  • 单元测试: spring test+DBunit
  • 底层支撑: 插件体系及代码生成器(rapid-generator)

项目下载:
http://code.google.com/p/rapid-framework/downloads/list

文档:
http://code.google.com/p/rapid-framework/wiki/menu

代码生成器新特性通报

新版本的代码生成器相关特性如下, 大家点评一下.
一.代码生成器模板可以引用的相关变量
1. g.generateByTable(”table_name”) 方法可以引用的变量
table : cn.org.rapid_framework.generator.provider.db.model.Table
2. g.generateByClass(”class”) 方法可以引用的变量
clazz : cn.org.rapid_framework.generator.provider.java.model.JavaClass
3.公共变量
env : 系统环境变量
system : System.getProperties()
generator.properties 文件中的所有属性,直接引用,没有前缀
gg : 模板控制变量, cn.org.rapid_framework.generator.GeneratorControl
二.每个模板有gg变量可以控制自身的自定义配置
如是否生成,是否覆盖目标文件,甚至是生成其它文件
示例: ${gg.setIgnoreOutput(true)}, 参考: http://code.google.com/p/rapid-framework/wiki/rapid_generator_gg
三.自动拷贝二进制文件至输出目录
如模板目录下的 zip,rar,doc文件将会自动拷贝至输出目录,不会破坏文件格式   (通过扩展名自动识别)
六. 自动删除模板扩展名:ftl
举例:  如你有一个模板 SqlMap.xml.ftl  将变为 SqlMap.xml
所以你要生成ftl扩展名的文件,应该将文件名从 list.ftl => list.ftl.ftl
五. 模板自动include同级目录:macro.include文件
示例: 如你的模板为 java_src/com/project/UserDao.java, 将自动include: java_src/com/project/macro.include 及 macro.include
六. 自动替换generator.properties中的句号(.)为反斜杠,设置key为key+”_dir”后缀
示例: pkg=com.company => pkg_dir=com/company
七. 数据库表的自定义配置,(现每一个列的属性都可以进行一些自定义配置)
<!–
<数据库表名 className=”类名称” tableAlias=”表的别名”>
<数据库列名 columnAlias=”列的别名”
javaType=”自定义javaType”
unique=”是否唯一性约束” nullable=”是否可以为空” pk=”是否主键,在表没有主键的情况下,可以指定一个代理主键”
updatable=”是否可以更新” insertable=”是否插入”
enumString=”枚举值,以分号分隔,示例值:M(1,男);F(0,女) 或者是:M(男);F(女)”
enumClassName=”如果枚举有值,生成的类名称将是这个,没有枚举值,该配置无用.示例值:Sex”
/>
</数据库表名>
–>
<user_info className=”UserInfo” tableAlias=”UserInfo” >
<username columnAlias=”用户名”
javaType=”String”
unique=”false” nullable=”true” pk=”false”
updatable=”true” insertable=”true”
enumString=”F(1,Female);M(0,Male)” enumClassName=”用户枚举”
/>
<password columnAlias=”password”
javaType=”String”
unique=”false” nullable=”true” pk=”false”
updatable=”true” insertable=”true”
enumString=”" enumClassName=”PasswordEnum”
/>
</user_info>
八.参考:
模板引擎为freemarker,语法参考: http://freemarker.sourceforge.net/docs/index.html
生成器在线文档: http://code.google.com/p/rapid-framework/wiki/rapid_generator

新版本的代码生成器相关特性如下

一.代码生成器模板可以引用的相关变量

1. g.generateByTable(”table_name”) 方法可以引用的变量

  • table : cn.org.rapid_framework.generator.provider.db.model.Table

2. g.generateByClass(”class”) 方法可以引用的变量

  • clazz : cn.org.rapid_framework.generator.provider.java.model.JavaClass

3.公共变量

  • env : 系统环境变量
  • system : System.getProperties()
  • generator.properties 文件中的所有属性,直接引用,没有前缀
  • gg : 模板控制变量, cn.org.rapid_framework.generator.GeneratorControl

二.每个模板有gg变量可以控制自身的自定义配置

  • 如是否生成,是否覆盖目标文件,甚至是生成其它文件
  • 示例: ${gg.setIgnoreOutput(true)}, 参考: http://code.google.com/p/rapid-framework/wiki/rapid_generator_gg

三.自动拷贝二进制文件至输出目录

  • 如模板目录下的 zip,rar,doc文件将会自动拷贝至输出目录,不会破坏文件格式   (通过扩展名自动识别)

六. 自动删除模板扩展名:ftl

  • 举例:  如你有一个模板 SqlMap.xml.ftl  将变为 SqlMap.xml
  • 所以你要生成ftl扩展名的文件,应该将文件名从 list.ftl => list.ftl.ftl

五. 模板自动include同级目录:macro.include文件

  • 示例: 如你的模板为 java_src/com/project/UserDao.java, 将自动include: java_src/com/project/macro.include 及 macro.include

六. 自动替换generator.properties中的句号(.)为反斜杠,设置key为key+”_dir”后缀

  • 示例: pkg=com.company => pkg_dir=com/company

七. 数据库表的自定义配置,(现每一个列的属性都可以进行一些自定义配置)

<!–

<数据库表名 className=”类名称” tableAlias=”表的别名”>

<数据库列名 columnAlias=”列的别名”

javaType=”自定义javaType”

unique=”是否唯一性约束” nullable=”是否可以为空” pk=”是否主键,在表没有主键的情况下,可以指定一个代理主键”

updatable=”是否可以更新” insertable=”是否插入”

enumString=”枚举值,以分号分隔,示例值:M(1,男);F(0,女) 或者是:M(男);F(女)”

enumClassName=”如果枚举有值,生成的类名称将是这个,没有枚举值,该配置无用.示例值:Sex”

/>

</数据库表名>

–>

<user_info className=”UserInfo” tableAlias=”UserInfo” >

<username columnAlias=”用户名”

javaType=”String”

unique=”false” nullable=”true” pk=”false”

updatable=”true” insertable=”true”

enumString=”F(1,Female);M(0,Male)” enumClassName=”用户枚举”

/>

<password columnAlias=”password”

javaType=”String”

unique=”false” nullable=”true” pk=”false”

updatable=”true” insertable=”true”

enumString=”" enumClassName=”PasswordEnum”

/>

</user_info>

八.参考:

  • 模板引擎为freemarker,语法参考: http://freemarker.sourceforge.net/docs/index.html
  • 生成器在线文档: http://code.google.com/p/rapid-framework/wiki/rapid_generator

rapid-framework发布新版本: v3.5

本次的主要更新内容是重新拾起flex,重整了flex插件. 而spring3.0.2及ibatis3正式版一直未发布,只能先发布rapid v3.5以后再更新进来,感谢一直支持rapid的同学.

v3.5更新内容:

  • 扩展jsp,freemarker,velocity的模板可以相互继承,打造替换sitemesh,struts tiles的布局框架.
  • freemarker,velocity实现管道操作来进行布局
  • 新增分页方言: SQLServer2005Dialect
  • spring事务配置采用@Transactional替换xml配置
  • jdbc增加了sql生成工具,用于进一步封装spring jdbc操作

新增插件:
flex_cairngorm:  基于cairngorm mvc的flex插件,代码生成器生成的在线demo
freemarker_html_view: 基于freemarker的html视图,用于不喜欢jsp的同学使用

文档:
通过工具http://code.google.com/p/google-code-wiki-to-html/
现rapid压缩包自带离线文档,当然你也可以在线浏览
新的子项目:
flex-security: flex UI组件权限控制框架, 项目地址: http://code.google.com/p/flex-security/

其它修改:
目录结构进行调整.

项目下载:
http://code.google.com/p/rapid-framework/downloads/list

文档:
http://code.google.com/p/rapid-framework/wiki/menu
 

rapid-framework发布v3.0 版本

虽然spring 3.0及ibatis3还未发布,但rapid里面的集成基本已经成型,正式版发布会继续跟进.

以下是changelog

新增插件
springmvc_rest : spring restful插件,现基于springmvc3.0 rc1版本,并且rc1还有一个bug,现rapid自带一个类手工修复
ibatis3 : 现在跟随ibatis3 beta5版本,扩展实现了基于dialect的分页
rapid_mailer : 基于spring mail的邮件发送插件,向ruby on rails的mailer靠拢
rapid-generator代码生成器
增加g.generateByTable(’sql_table_name’,'className’)可以指定要生成的className;
其它
jdbc分页方言(Dialect)提供占位符的方式
升级struts2 jars => 2.1.8

重构代码
DEMO:

代码生成器生成的jsp界面预览
代码生成器生成的代码demo,生成的代码将极其干净并易于理解。
在线springmvc_rest+ibatis3 demo,  并且可以通过这里下载war包

现rapid在官网可以直接下载daily-build,并且还可以查看单元测试报告,以加强使用rapid的信心,:)

rapid下载地址: http://code.google.com/p/rapid-framework/downloads/list

rapid-framework发布v2.5.0版本

赶在国庆之前发布一个版本,庆祝国庆,:)

更新内容:

提升:

XsqlBuilder支持Object作为filters

PageRequest.filters使用范型

新特性:

支持Ibatis的分页Dialect

新增其它数据库的jdbc分页Dialect

生成器:

支持从数据库中读取注释作为alias

生成器模板:

删除subpackage,使用namespace变量替换,但只作用于jsp

list.jsp现在包含查询

新增插件:

simpletable 简单的列表分页

extjs ext模板

其它更改:

新增一个后台模板

其它一些bugfixed及大量整理及重构

DEMO:

代码生成器生成的jsp界面预览

代码生成器生成的代码demo,生成的代码将极其干净并易于理解。

rapid-framework介绍:

rapid-framework是一个类似ruby on rails项目脚手架,框架将各个零散的框架(struts,strust2,springmvc,hibernate,ibatis,spring_jdbc,flex)以插件的方式搭建好,根据自身的需要可以随意搭配项目组合(如springmvc+ibatis,struts2+hibernate),并内置一个代码生成器,辅助项目开发,可以生成java的hibernat model,dao,manager,struts+struts2 action类,可以生成jsp的增删改查及列表页面

项目定位:

本框架是类似appfuse,springside的框架,但定位与springside及appfuse不同,它们更像是一些代码的最佳实践,而rapid-framework则是可以真正应用于项目开发, 并且代码也将优化至极致.使用脚手架3分钟即可以搭建出一个实际项目.

附语:

任何一个公司或是个人都应该有自己内部的一个脚手架,是公司的积累以及一致的开发标准,如果你现在仍没有,那么rapid-framework现在是你最适合的选择,可以自由扩展,构建属于自己的脚手架.

项目网站及下载: http://code.google.com/p/rapid-framework/