热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

一直从事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;

}

}

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



推荐阅读
author-avatar
手机用户2602880745
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有