对FreeMarker而言,无非是“Template + data-model = output”。
这里,假设我们所要生成的Java代码,即“output”如下:
package com.cs.qdog.swift.objects;
public class F32B {
private Double amount;
private String currency;
public Double getAmount() {
return amount;
}
public void setAmount(Double amount) {
this.amount = amount;
}
public String getCurrency() {
return currency;
}
public void setCurrency(String currency) {
this.currency = currency;
}
}
其中,类名、属性都属于“data-model”,其可用树形结构表现如下:
(root)
|
+- class = “F32B”
|
|- properties
| |
| +- currency
| | |
| | +- name = “currency”
| | |
| | +- type = “String”
| |
| +- amount
| | |
| | +- name = “amount”
| | |
| | +- type = “Double”
那么,则可使用如下“Template”:
package com.cs.qdog.swift.objects;
public class ${class} {
<#list properties as prop>
private ${prop.type} ${prop.name};
</#list>
<#list properties as prop>
public ${prop.type} get${prop.name?cap_first}(){
return ${prop.name};
}
public void set${prop.name?cap_first}(${prop.type} ${prop.name}){
this.${prop.name} = ${prop.name};
}
</#list>
}
最后,将FreeMarker文档中的例子改动一下,测试生成“output”的Java程序如下:
package com.cs.qdog.swift.objects;
import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class GenObjects {
public static void main(String[] args) throws IOException,
TemplateException {
/* ------------------------------------------------------------------- */
/* You usually do it only once in the whole application life-cycle: */
/* Create and adjust the configuration */
Configuration cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(new File(
"D:/Temp/EclipseWorkSpace/GenSwiftFields/templates"));
cfg.setObjectWrapper(new DefaultObjectWrapper());
/* ------------------------------------------------------------------- */
/* You usually do these for many times in the application life-cycle: */
/* Get or create a template */
Template temp = cfg.getTemplate("SwiftFieldClass.ftl");
/* Create a data-model */
Map<String, Object> root = new HashMap<String, Object>();
root.put("class", "F32B");
Collection<Map<String, String>> properties = new HashSet<Map<String, String>>();
root.put("properties", properties);
/* subfield 1: currency */
Map<String, String> currency = new HashMap<String, String>();
currency.put("name", "currency");
currency.put("type", "String");
properties.add(currency);
/* subfield 2: amount */
Map<String, String> amount = new HashMap<String, String>();
amount.put("name", "amount");
amount.put("type", "Double");
properties.add(amount);
/* Merge data-model with template */
Writer out = new OutputStreamWriter(System.out);
temp.process(root, out);
out.flush();
}
}
分享到:
相关推荐
"基于Freemarker的JAVA代码生成工具"就是这样一种实用的工具,它能够根据数据库中的表结构自动生成相应的Java源代码。 **Freemarker简介** Freemarker是一个强大的模板引擎,它支持动态语言,常用于生成HTML页面...
总的来说,“使用FreeMarker生成java代码”这个话题涵盖了模板引擎的基本概念、FreeMarker的语法特性以及如何结合Java应用来实现代码生成。通过学习和实践,开发者可以更加熟练地运用FreeMarker这一强大的工具,提升...
Freemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+java
Freemarker是一个强大的模板引擎,常用于动态生成HTML、XML或其他文本格式的文件,比如在Java开发中,它被广泛应用于生成代码、邮件模板、报表等。本篇将详细介绍如何利用Freemarker来生成Java代码。 一、...
总的来说,Java利用Freemarker模板生成代码是一种常见的自动化开发实践,它提高了开发效率,降低了出错概率,让开发者能更专注于业务逻辑的实现,而不是基础架构的搭建。通过理解和掌握这一技术,开发者可以更好地...
总结来说,利用FreeMarker自动生成Java代码是现代软件开发中的一个重要实践,它可以帮助开发者专注于业务逻辑和复杂问题,而不是琐碎的代码复制粘贴。通过精心设计的模板和数据模型,可以快速构建出符合规范的MVC...
2、由上述生成的html模板通过java代码生成pdf; 3、示例有本地模板和远程模板之分,可杜绝pdf标题丢失的问题; 4、资源概要:先阅读README.md文档,然后根据文档中的资源示例运行代码,有postman和内部调用两种方式; 5...
不太推荐需要在代码内部编写PDF格式,如果要使用,建议写个基类,将同一版本 或者同一类型的公共方法写入,差异化的抽象,一个模板一个子类,子类使用@Component命名,使用反射的方式获取模板子类。 2. ...
【标题】"使用FreeMarker模版引擎自动生成Java项目源代码" 在软件开发过程中,代码生成是一个节省时间和提高效率的重要环节。FreeMarker是一个强大的、基于模板的Java模板引擎,广泛用于生成动态内容,如HTML、XML...
Java代码自动生成是一种提高开发效率、减少重复劳动的编程实践,FreeMarker是一个强大的模板引擎,常用于动态生成HTML或其他类型的文本文件,但在Java世界里,它也可以用来自动生成代码。本篇文章将深入探讨如何利用...
Java代码生成器通常基于模板引擎来实现,例如压缩包中的"freemarker.jar",这是一个流行的Java模板引擎——FreeMarker。FreeMarker是一个与任何Java应用完全分离的模板引擎,它可以动态生成HTML、XML或其他任何形式...
当我们需要在Web应用中生成可编辑的文档或者将网页内容导出为Word格式时,`FreeMarker`是一个非常实用的工具。这个标题“Java html转word 使用FreeMarker”暗示了一个Java项目,它利用FreeMarker模板引擎来实现HTML...
在Java开发中,生成PDF文件是一项常见的需求,特别是在企业级应用中,如生成合同、报告等文档。FreeMarker是一个强大的模板引擎,常用于生成HTML、XML等动态内容,但也可以结合其他库来生成PDF。本篇文章将深入探讨...
Java FreeMarker+Maven 实现代码自动生成是一个高效且灵活的方法,可以帮助开发者节省大量手动编写重复性代码的时间。FreeMarker 是一个强大的模板引擎,而Maven作为项目构建工具,能够帮助我们管理和组织项目的构建...
FreeMarker 是一个强大的模板引擎,常用于动态生成HTML、Word等文档。在Word文档中生成统计图是一项常见的需求,尤其在数据分析和报告制作时。本篇文章将深入探讨两种方法,教你如何利用FreeMarker来实现这一功能。 ...
1. **Freemarker基础知识**:Freemarker是一个基于模板的语言,它允许开发者通过定义模板文件,然后结合Java对象数据,生成动态内容。模板文件中包含了一系列控制结构(如条件语句、循环)和变量引用,这些变量可以...
在Java开发中,FreeMarker被广泛应用于生成代码,如本例中提到的“FreeMarker 生成Java、mybatis文件”。这个过程涉及到Java编程、模板语言、以及MyBatis框架的使用。 1. **FreeMarker 模板引擎** FreeMarker 是一...
Wsdl2Java工具是Apache CXF框架的一部分,它用于从WSDL(Web Services Description Language)文件生成Java客户端和服务端代码。WSDL是描述Web服务的XML文档,包含了服务的接口定义、消息格式、地址等信息。使用Wsdl...
代码生成器支持model、Mapper、Dao、Service、ServiceImpl、Controller 一次性的生成,支持同时生成多张表,此代码生成器依赖JAR包比较少,除了必用Freemarker 和JDBC之外基本上完全个人编写
Freemarker是一个强大的模板引擎,常用于Java应用中动态生成HTML、XML或其他文本格式的文件。这个示例是关于如何使用Freemarker来生成XML文件,对于初学者来说,理解这个过程有助于掌握Freemarker的基本用法和XML的...