用Groovy Template 生成代码 2nd

本文介绍了GroovyTemplate作为JSP的简化版本,具备XPath内置xml语法,并可通过Java或Groovy直接调用。此外还探讨了GroovyTemplate的使用方法及局限性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2005年07月08日 13:23:00

update at 2005.7.28 upgrade 更新 Java直接调用的方式 and JSR-2

前篇:轻量级的代码生成方案选择

0.Groovy Template概述

Groovy Template其实就是JSP的Groovy简化版,而且有XPath这样的内置xml简化语法,并且不依赖于JSP容器,可由Java或Groovy直接调用。

TemplateEngine的实现代码只有219行,在src/groovy/test/SimpleTemplateEngine.java

因为JSR-2的多行String 改用""" """而不是" " 来括住,所以 SimpleTemplateEngine暂时不可以用,可用GStringTemplateEngine暂代。

1.Groovy Template
Groovy官方网站上的链接: Groovy Templates

Groovy Template类似JSP,不过有着动态语言的全部优势。
IBM中文站上的《实战Groovy: 使用Groovy 模板进行MVC 编程》

2.Groovy的内置xml语法
Groovy官方网站上的链接: GPath

GPath是Groovy内置的XML访问语法,很简单,两种典型的使用方式如下:

characters = book.character
for (c in characters)
{
println c['@name']
}

character = book.character.find { it['@id'] == '2' }

3.在ant里调用groovy template
3.1 用Groovy调用template在IBM的文章里讲了。

3.2 用java直接调用template的方式如下

 SimpleTemplateEngine engine = new SimpleTemplateEngine();
Map binding = new HashMap();
binding.put(....);
String output = engine.createTemplate(templateFile).make(dataModel).toString();

4.不足:
据同事讲的
1.模板不能用import语句,必须写类的全路径
2.对 >% % <没有方便的转义字符>
3.xml语法里,节点只能拿到children(),不能拿到parent()

都不是很难的事情,相信后继版本会改进。最惨的其实是没有好的编辑器,想想Velocity, Freemarker遭受的待遇,GSP想很快有个好编辑器也不是这么容易。



Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=417373


### 在 IntelliJ IDEA 中使用 Groovy 脚本自动生成代码 #### 配置环境 为了在 IntelliJ IDEA 中顺利运行 Groovy 脚本并实现自动化代码生成功能,需先完成必要的开发环境配置。确保已安装最新版本的 IntelliJ IDEA 并启用了 Groovy 插件支持[^1]。 #### 创建 Groovy 文件 通过菜单栏 `File` -> `New...` 或者右键点击项目中的包名来创建一个新的 Groovy 类或脚本文档。这一步骤允许开发者编写用于生成代码逻辑的具体 Groovy 语句。 #### 编写 Groovy 脚本 下面是一个简单的例子展示如何利用 Groovy 来定义模板化的方式生成 Java 实体类: ```groovy // 定义一个方法用来生成Java实体类字符串 String generateEntityClass(String className, List<String> fields) { StringBuilder sb = new StringBuilder() // 添加package声明 (假设当前目录作为默认包路径) sb.append("package ${new File('').absolutePath.tokenize('/')[-2]};\n\n") // 开始构建class主体结构 sb.append("public class ").append(className).append(" {\n") // 自动添加字段成员变量及其getter/setter方法 fields.each { field -> String type = "String" if(field.contains(":")){ def parts = field.split(':') type = parts[0].trim() field = parts[1].trim() } sb.append("\tprivate $type $field;\n") // 成员属性 // getter 和 setter 方法 sb.append("\tpublic void set${field.capitalize()}($type value){ this.$field=value; }\n") sb.append("\tpublic $type get${field.capitalize()}(){ return this.$field;}\n") } // 结束大括号 sb.append('}') } ``` 此函数接收两个参数:一个是目标类的名字;另一个是由多个形如 `"类型:名称"` 的字符串组成的列表表示各个属性的信息。它返回一段完整的 Java 源码文本,其中包含了指定类型的私有字段以及相应的访问器和修改器方法。 #### 运行 Groovy 脚本 保存上述 Groovy 文件之后,在编辑窗口顶部找到绿色的小三角按钮执行该文件。如果一切正常的话,将会看到控制台输出所期望得到的新建实体类的内容。 #### 将结果集成到项目里 可以考虑将生成的结果复制粘贴至实际项目的源代码位置,或是进一步探索更高级的功能——比如直接让 Groovy 输出到特定的目标文件中去,从而完全自动化的流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值