学习开发代码生成器(一)--使用FreeMarker开发代码生成器

学习开发代码生成器(一)--使用FreeMarker开发代码生成器

 

什么是代码生成器

     代码生成器:可以生成代码的程序

     代码生成器=模板+数据+合成机制。Tomcat内部就有一个代码生成器可以生成HTML代码,客户端访问时,访问到的实际是Tomcat根据JSP(一种模板文件)和数据生成了静态的HTML代码。

为什么需要代码生成器

    (1)节省人力成本

    (2)易于代码规范控制

什么是FreeMarker

     FreeMarker是一款模板引擎: 即一种基于模板和数据,并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。

使用FreeMarker开发代码生成器步骤

开发代码生成器步骤

    (1)创建一个Maven项目,添加FreeMarker依赖

    (2)创建一个Java类。

    (3)创建init方法,使用FreeMaker的Configuration类,初始化环境

            --Configuration常用API

方法名称参数描述
Configuration(Version incomp
atibleImprovements )
Version(可以通过Configuration.getVersion获取)生成Configuration类的对象
setDirectoryForTemplateLoadi
ng(File dir)
File设置模板所在目录
getTemplate(String file)String设置模板文件名称

    (4)创建process方法,实例化模板(Template),执行代码生成

            --使用Configuration的getTemplate(String file)方法,实例化Template

            --Template常用API

方法名称参数描述
process(Object data,
Writer out)
Object,Writer  生成数据文件

    (5)在设置的模板所在目录下,创建模板文件

    (6)测试

 

具体实现步骤

--》创建一个Maven项目

-->设置<packaging>jar</packaging>,添加freemaker依赖

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.23</version>
</dependency>

--》创建一个Generator的Java类,添加如下代码

import freemarker.template.Configuration;
import freemarker.template.Template;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.Map;

/**
 * Created by Anna. on 2019/5/13 0013.
 */
public class Generator {

    private Configuration configuration = new Configuration(Configuration.getVersion());

    /**
     *  1、初始化配置
     */
    public void init(){
        try {
            configuration = new Configuration(Configuration.getVersion());
            // 获取Resources目录路径
            String path = this.getClass().getClassLoader().getResource("").getPath();
            // 设置模板所在文件夹
            configuration.setDirectoryForTemplateLoading(new File(path));
        }catch (Exception e){
            e.printStackTrace();
        }

    }

    /**
     * 2、获取模板生成相应数据
     */
    public void process(Map<String, Object> param, String tempName, String fileDir){
        try {
            // 设置模板文件名称
            Template template = configuration.getTemplate(tempName);

            FileOutputStream fos = new FileOutputStream(fileDir);
            // 生成数据文件
            template.process(param,new OutputStreamWriter(fos));
        }catch (Exception e){
            e.printStackTrace();
        }

    }
    
}

--》在Resource目录下新建Hello.ftl模板文件,添加代码如下

<html>
<head></head>
<body>
    Hello ${name} !
</body>
</html>

--》Generator类中,添加测试方法,代码如下

    public static void main(String[] args) {
        Generator generator = new Generator();
        // 初始化环境
        generator.init();
        // 创建数据
        Map<String,Object> param = new HashMap<String, Object>();
        param.put("name","Tom");
        // 设置文件生成路径
        String path = "D:/test/generator/test.html";
        // 设置模板文件名称
        String filename = "Hello.ftl";
        // 获取模板生成相应数据生成文件
        generator.process(param,filename,path);
    }

--》执行main方法,生成文件

--》查看测试文件

--》完成

附件

学习开发代码生成器(一).zip

链接:https://pan.baidu.com/s/1hpfoXYg9P1gAv6A8fxcaTg 
提取码:lym4 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丨Anna丨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值