java 网页生成_在java web项目中编写自己的代码生成器

一直从事web开发工作,最近发现一直在写几乎重复的代码,于是就想着给项目中添加一个代码生成器的功能。大体思路如下:(数据+模板)

5fa321d23e1d?nomobile=yes

思路图

这里我使用的模块引擎为:beetl(国人开发的,官网有详尽的文档)。

下面我以生成bean java类为例的实现:

bean类文件的模板如下:

package #{bean.beanPackage};

/**

* @author #{bean.beanAuthor} #{bean.beanCreateTime}

*

*/

public class #{bean.beanClassName} extends AbsBean{

for(param in bean.properties){

#>

private #{param.type} #{param.name};//#{param.remark}

for(param in bean.properties){

var firstChar = strutil.subStringTo(param.name,0,1);

var firstChar_upper = strutil.toUpperCase(firstChar);

var paramName = strutil.replace (param.name,firstChar,firstChar_upper);

#>

public String get#{paramName}() {

return #{param.name};

}

public void set#{paramName}(String #{param.name}) {

this.#{param.name} = #{param.name};

}

}

java 代码如下:

public class MyGenerator {

public static void main(String[] args) throws IOException {

String root = System.getProperty("user.dir")+File.separator+"template";//模板路径

FileResourceLoader resourceLoader = new FileResourceLoader(root,"utf-8");

Configuration cfg = Configuration.defaultConfiguration();

GroupTemplate gt = new GroupTemplate(resourceLoader, cfg);

MyGenerator t = new MyGenerator();

t.getCodeForBean(gt, "/bean.template");//

}

/**

*

* @param gt

* @param FilePath 模板路径

*/

private void getCodeForBean(GroupTemplate gt,String FilePath){

Template t = gt.getTemplate(FilePath);

BeanOfBean bean = new BeanOfBean();

bean.setBeanAuthor("Tom");

bean.setBeanClassName("TestBean");

bean.setBeanCreateTime(new Date().toString());

bean.setBeanPackage("com.space.test.bean");

List list = new ArrayList();

ColumnBean b = new ColumnBean();

b.setName("id");//字段名

b.setRemark("id");//字段备注

b.setType("String");//字段类型

ColumnBean b2 = new ColumnBean();

b2.setName("name");//字段名

b2.setRemark("名称");//字段备注

b2.setType("String");//字段类型

list.add(b);

list.add(b2);

bean.setProperties(list);

t.binding("bean",bean);

String str = t.render();

System.out.println(str);//打印出生成的代码

}

}

运行后控制台输出的代码如下:

package com.space.test.bean;

/**

* @author Tom Mon Sep 26 16:36:59 CST 2016

*

*/

public class TestBean extends AbsBean{

private String id;//id

private String name;//名称

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

总结:一个代码生成器其实就是:数据被填充到模板中,而填充使用模板引擎(或者自己用代码实现) ,这些模板引擎各自有自己的语法,当然他们的效率以及优势各有不同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值