文档章节

再论代码生成器

黄勇
 黄勇
发布于 2013/10/12 11:01
字数 629
阅读 2161
收藏 4
点赞 3
评论 6

本文是《轻量级 Java Web 框架架构设计》的系列博文。

经过一个月的时间,一切从无到有,Smart Framework 1.0 终于发布了,我也在为下一个大的版本版本考虑功能特性。我认为至少有两件事情需要做,1. 代码生成器的应用;2. 提供常用的插件。

最近看了一下 Grails,它是一款 Full Stack(一站式)Java Web 开发框架,充分借鉴了 Ruby on Rails(RoR) 的架构,不同的是,它使用了 Groovy 语言作为主要开发语言,同时也可以支持 Java 语言。感觉 Grails 的出现,就是为了让 Java 开发人员尝试一下 RoR 的特性。通过命令行可以创建项目框架,然后根据实际的需求去完善框架,并提供了内置的 Web 服务器,提供了良好的开发与测试环境。Grails 也内置了许多成功的开源框架,如:Spring、Hibernate,还有一些 SCM 工具,如:Ivy、Maven 等。此外,还可随时导出 war 包,便于直接部署到生产机上。

体验了一下 Grails,让我对代码生成器有了一些新的想法。

用户能否将 smart-generator 作为一个工具,使用 smart 命令来生成相应的代码呢?

详细的命令示例如下:

  1. smart create-app:创建一个应用,输入应用名称与其他相关参数生成整个项目的目录结构,可直接导入到 IDE 中。
  2. smart create-entity product:创建一个的 Entity,名为 Product
  3. smart create-service product:创建一个 Service,名为 ProductService,同时包括该服务接口的实现类,名为 ProductServiceImpl。
  4. smart create-action product:创建一个 Action,名为 ProductAction,同时也生成了对应视图根目录为 www/page/product。
  5. smart create-page product:创建一个 Page,位于 www/page/product 目录下,文件名为 product.html。
  6. smart create-crud product:创建关于 product 的 CRUD 代码框架,包括:Entity、Service、Action、Page 等。
  7. smart load-dict:加载数据字典(Excel 文件),生成相应的 Entity 与 create table SQL 语句。
  8. smart run-app:启动内置的 Web 服务器(Tomcat 或 Jetty)运行应用。
  9. smart test-app:运行单元测试。
  10. smart build-app:将应用打包为 war 格式,便于部署。

以上命令打算提供 Windows 版本与 Linux 版本,只需将 smart-generator 程序包解压,并放置到磁盘中某路径下,配置环境变量 SMART_HOME 与 PATH,即可在命令行中使用 smart 命令。

对于以上思路,您有何建议呢?期待大家的评论。

© 著作权归作者所有

共有 人打赏支持
黄勇

黄勇

粉丝 6172
博文 121
码字总数 215797
作品 1
浦东
CTO(技术副总裁)
加载中

评论(6)

南北桥
南北桥

引用来自“腾飞工作室”的评论

使用yeoman编写代码生成器,可以参考一下这个 https://github.com/yintai/generator-yintai-springboot
腾飞工作室
腾飞工作室
使用yeoman编写代码生成器,可以参考一下这个 https://github.com/yintai/generator-yintai-springboot
aoyanfeng
aoyanfeng
3maven archetype
景樗子刘
景樗子刘
命令在哪里执行呢,希望能在ide里执行,如eclipse中控制台中能敲命令,需要插件支持,在eclipse中添加一个控制台,类似eclipse的 osgi host console
黄勇
黄勇

引用来自“铂金小熊”的评论

这些命令的执行是不是和 maven 的那些命令类似,有生命周期的概念,而且执行后面的 target 会把前面的 target 也壹并执行掉?

我想稍微简单一点比较好,只是输入命令,创建代码框架而已。不排除用这些命令会调用 Maven 命令,比如:使用 smart war 调用 mvc package。
苗哥
苗哥
这些命令的执行是不是和 maven 的那些命令类似,有生命周期的概念,而且执行后面的 target 会把前面的 target 也壹并执行掉?
【探秘ES6】系列专栏(三):生成器

ES6作为新一代JavaScript标准,即将与广大前端开发者见面。为了让大家对ES6的诸多新特性有更深入的了解,Mozilla Web开发者博客推出了《ES6 In Depth》系列文章。CSDN已获授权,将持续对该系...

一配
2015/10/27
0
0
LaineyC/blackdream

#BlackDream 文件生成器构建平台 ##机械重复性的工作如同黑色梦魇,同一个问题并不应该被解决两次。 ##项目介绍 网上的代码生成器形形色色五花八门,功能也很强大,甚至某些代码生成器能够一...

LaineyC
2016/09/20
0
0
Web开发者选择的最佳HTML5/CSS3代码生成器

原文地址:http://codecloud.net/css3-code-generators-for-web-programmers-6672.html HTML5 和CSS3是一入门就能用的最好的语言,最简单同时也最好的的方式就是直接开始做!那么生成器就在自...

数通畅联
2015/11/30
183
0
和平之翼代码生成器--PeaceWingSM-Swing

和平之翼代码生成器 SM Swing 单机版 0.8 版。本版是和平之翼 Java 代码生成器 SM Swing 单机版 0.8 版。SHC 技术栈支持 Spring MVC4,Spring4,MyBatis 3。 本版是 Swing 单机版,是可以运行...

匿名
2017/09/15
134
1
Web开发者推荐的最佳HTML5/CSS3代码生成器

HTML5和CSS3是一入门就能用的最好的语言,最简单同时也最好的的方式就是直接开始做!那么生成器就在自动生成代码时扮演者重要角色,它们非常适用于那些要做很多重复性工作的开发人员和设计人...

老胡不胖
2015/11/25
3.9K
3
和平之翼 Java 代码生成器--PeaceWingSHC-Swing

和平之翼 Java 代码生成器 SHC Swing 单机版 0.8 版。 本版是和平之翼 Java 代码生成器 SHC 0.8 版。SHC 技术栈支持 Spring MVC4,Spring4,Hibernate 4 Criteria。 本版是 Swing 单机版,是...

火箭船
2017/09/11
151
1
和平之翼代码生成器单机 1.6 版--PeaceWingSMEU_Swing_1_6

和平之翼代码生成器SMEU Swing单机1.6版 ,是和平之翼代码生成器的Swing单机版,是可运行的Jar包。 在装好JDK或JRE的计算机上双击即可执行。也可在命令窗口以java -jar PeaceWingSMEUSwing1...

火箭船
2017/08/28
188
1
和平之翼代码生成器S2SM版-PeaceWing

和平之翼代码生成器 S2SM 工作组版,本版是和平之翼 Java 代码生成器 S2SM 0.7.1 版。SHC 技术栈支持 Struts 2,Spring4,MyBatis 3。 和平之翼 Java 代码生成器是动词算子式 Java 通用代码生...

火箭船
2017/09/15
102
1
无垠式 Java 通用代码生成器 Ada 1.5.0 正式版已发布

无垠式Java通用代码生成器JEEEU版 Ada 1.5.0 正式版已发布,项目地址: https://gitee.com/jerryshensjf/InfinityJEEEU 无垠式Java代码生成器JEEEU版 这是最轻量级的代码生成器,生成物大概占...

火箭船
06/11
0
3
和平之翼代码生成器 SHC 0.8 版-PeaceWingSHC

和平之翼代码生成器 SHC 0.8 版工作组版。 本版是和平之翼 Java 代码生成器 SHC 0.8 版。SHC 技术栈支持 Spring MVC4,Spring4,Hibernate 4 Criteria。 和平之翼 Java 代码生成器是动词算子...

火箭船
2017/09/11
124
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Webpack使用nodemon实时打包编译

业务场景: 1.编写一个npm组件包并且link到了项目文件中 2.需要不断的修改并run build编译npm包并且在项目run dev 查看效果 3.问题: 每次改完npm包都要手动run build编译十分的麻烦且低效,可不...

JamesView
13分钟前
0
0
电脑炸了,浪费我好几天时间,还是简要记下来吧

我的小本本一直在兢兢业业的干活,然而前几天说炸就炸了...... 爆炸现场: 软件: windows10 pro + EIS11+ 360卫士 BIOS:N1DET98W 2.24 硬件: Xeon E3 1505-V5 nv-M3000M thinkpadP70:20E...

Oh_really
17分钟前
0
0
Git之branch和checkout

1.branch是查看、创建、删除分支 #>git branch --helpNAME git-branch - List, create, or delete branchesSYNOPSIS git branch [--color[=<when>] | --no-color] [......

汉斯-冯-拉特
19分钟前
0
0
Mybatis拦截器之数据权限过滤与分页集成

需求场景 最近项目有个数据权限的业务需求,要求大致为每个单位只能查看本级单位及下属单位的数据,例如:一个集团军下属十二个旅,那么军级用户可以看到所有数据,而每个旅则只能看到本旅部...

佛系程序猿灬
28分钟前
8
0
SpringCloud 微服务 (十六) 服务追踪 Zipkin

问题 在服务中,有一个接口,该A接口中又调用了其他服务的B、C、D接口,出现一个请求耗时大的问题,这时候并不知道该B、C、D接口中哪个接口造成的耗时量,然后比如确定C服务接口出现的耗时量大,但...

___大侠
今天
0
0
Java面试基础篇——第八篇:抽象类与接口的区别

1.抽象类 抽象类:如果一个类中包含有抽象方法,或这个类使用abstract关键字修饰,则称这个类是抽象类。 抽象方法是什么呢?抽象方法就是指用abstract关键字修饰的方法。 需要注意的是:抽象...

developlee的潇洒人生
今天
2
0
jsoup 相关资料

1.jsoup 2.Jsoup概述 3.jsoup入门 4.jsoup Java HTML Parser 1.11.3 API

IT追寻者
今天
1
0
JPA @MappedSuperclass 注解说明

基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中。 1.@MappedSuperclass注解只能标准在类上:@Target({java.lang....

海博1600
今天
0
0
【一】Scala Configuration 相关API

Play使用了 Typesafe config library,但是也提供了一个有着更多Scala高级特性的的 Configuration 封装。不熟悉Typesafe配置的开发者可以移步 configuration文件的语法和特性文档。 读取配置...

Landas
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部