编写代码生成工具的缘由
本人在应用开发部已经待了快1年了,对于大量重复代码编写早已经厌倦,总是做些无营养的工作,而且新来的同事风格各异,看着他们的代码就头痛。。。 无奈,为了别人,也是为了自己。
代码生成工具设计(自己已经完成了代码生成工具,并应用到自己的开发项目中。但因为和代码基线高耦合,没办法分离出来,在此只能暂时给些思路,稍后我会把主要类都一一献上,现在还在思考怎样才能写个可扩展极高的框架)
代码框架设计:
最好的方式就是可以让代码开发人员可以自己写 简易配置文件,模板,生成实现类。
框架提供配置式替换功能和配置文件解析功能。
通过读取模板,替换特定的标识符,达到快速开发的目的。
设计原则:
占有内存少:动态管理内存,缓存对象有自己的生命周期
产生文件效率高:一个文件一个线程,由线程池管理线程
优点:开发快。
缺点:不容易维护,不通用,重新生成会替换掉辛苦写的业务代码,如果想可重用度高些,对开发人员的素质要求较高。
生成类设计
说明:生成类对象可以是数据库中的 表 视图 存储过程,或已经写好的 pojo对象
当前表可以有多个 mayToOne
当前表可以有多个 oneToMany
当前表可以有多个 oneToOne
列表页面集合
编辑页面集合
生成后台文件
待修改文件集合
待创建文件集合
是否生成数据库
是否生成sql语句
生成页面用
页面布局对象
样式对象集合
按钮对象集合
动态全局配置参数
生成路径
生成文件选择(页面或后台文件):为已经添加业务代码的模块提供后悔药
修改文件选择(默认读取扩展的xml中所有修改文件)
是否生成sql文件
是否在当前数据库生成表,视图,存储过程
说明:
一个类可以生成多个列表页面和编辑页面,每个页面可以有不同的布局,字段可单独排序,列表有查询功能。
可单独生成某个类文件(之前在做代码生成器的时候,有时候会因为只想添加1个字段而需要重新生成,代码中已经写入业务代码,没办法。。。只能手动修改)
提供模板修改器
可动态修改模板文件,不用重启服务器,模板校验器会根据模板创建的日期判断是否加载
生成sql数据库创建语句文件
保存文件生成日志
生成文件出错后有详细的 log日志
提供预览功能
页面虚拟运行功能,模块虚拟运行功能
可解除模块的配置文件:注掉不用的模块
困难:如果再次生成 如何不替换掉业务代码进行更新操作。。。。。。
以下只有源码,需要自己配置SSH1环境,需要ExtJs,jquery
1.加载所有主配置文件 dom解析
初始化全局变量:
(1)上下文
(2)缓存Manage 永久缓存:主配置文件所有信息,临时缓存:用户配置文件信息
(3)线程池Manage(生成文件时,一个文件一个线程)
2.加载所有用户xml,验证路径和模板文件 sax解析
主配置文件信息将加载到缓存当前
标识符替换模板加载策略:
生成文件时加载标识符替换模板文件,如果已经加载则不再重新加载,由缓存Manage管理生命周期
文件生成策略:
读取模板,替换特定的标识符。