上篇文章(freemark基础知识)讲了一些freemark的一些基础语法,其实就是freemark自定义标签。本篇文章将讲解一下freemark是如何解析freemark模板的。
1 带有freemark标签的文件,内容如下:
package ${basepackage};
public class ${className}{
}
目的,通过freemark解析引擎,把${basepackage}、${className}替换成相应的字符串。
2 代码如下:
//获得配置信息
Configuration conf = new Configuration();
/*
* 搞一个map集合,两个key分别对应模板文件中的freemark的两个标签的名字。
* value是标签将被替换成的字符串
*/
Map data = new HashMap();
data.put("basepackage", "com.index.datacount");
data.put("className", "IndexDatacount");
try {
//获得Template
Template template =
conf.getTemplate("template\\main\\${basepackage_dir}\\model\\${className}.java");
//模板解析,并将解析结果输出到控制台
template.process(data, new OutputStreamWriter(System.out));
} catch (IOException e) {
e.printStackTrace();
}catch (TemplateException e) {
e.printStackTrace();
}
以上是freemark解析的一个小例子,也是代码生成的核心逻辑。只是在这个核心上面封装了一些别的东东。从这个基础出发,代码生成不再神秘。C#、C、C++、Shell、Python、JAVA、小学生作文,无所谓,不过一个字符串。代码生成,不过是一个字符串替换。