什么是 FreeMarker?
FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
下面是一个超简单的Demo:
整体结构:
pom.xml中添加依赖:
<dependencies>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.20</version>
</dependency>
</dependencies>
创建一个模板 1.ftl
public class ${className} {
}
创建类:
import freemarker.template.Configuration;
import freemarker.template.Template;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
public class FreeMarkerDemo {
public static void CodeMaker(String className) {
Configuration conf = new Configuration();
String dir = "E:\\jProjects\\demo\\freemarkerdemo\\src\\main\\resources\\templates\\";
try {
conf.setDirectoryForTemplateLoading(new File(dir));
Template template = conf.getTemplate("1.ftl");
Writer out =new FileWriter(new File(dir + className + ".java"));
Map<String,Object> dataModel = new HashMap<String,Object>();
dataModel.put("className", className);
template.process(dataModel, out);
out.flush();
out.close();
} catch (Exception e) {
}
}
}
调用的地方:
import java.util.ArrayList;
import java.util.List;
public class Applaction {
public static void main(String[] args) throws Exception {
List<String> list=new ArrayList<String>();
list.add("TestClass1");
list.add("TestClass2");
for (String s : list) {
FreeMarkerDemo.CodeMaker(s);
}
}
}
执行一下程序:
两个文件就创建好了