首先我要说的是...
这个只是个简单的演示而已..用GSE调用groovy脚本时间也够呛
这个解析很简单 但调用返回这个过程代价却很高 总共时间有400多毫秒(而我单独写个脚本来运行这个是连10ms页不需要的) 这是无法接受的
借用一句话吧 这种要实用还必须是"小消息,大计算"的情况下...
好了不废话了
jdk版本是7u40
groovy版本是2.1.7
为了简单处理 目录结构如下:
使用到的是h2.groovy
h2中的代码如下:
def writer=new StringWriter() def xml = new groovy.xml.MarkupBuilder(writer) xml.person(name:person.name){ age person.age for(def f : person.favor){ "favor" f } } writer.toString()
Person类:
import java.util.List; public class Person { private String name; private int age; private List<String> favor; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public List<String> getFavor() { return favor; } public void setFavor(List<String> favor) { this.favor = favor; } }
Main类:
import groovy.lang.Binding; import groovy.util.GroovyScriptEngine; import groovy.util.ResourceException; import groovy.util.ScriptException; import java.io.IOException; import java.util.ArrayList; public class Main { public static void main(String[] args) throws IOException, ResourceException, ScriptException { GroovyScriptEngine gse = new GroovyScriptEngine(Main.class .getClassLoader().getResource("").getPath().substring(1)); Binding binding = new Binding(); Person p = new Person(); p.setName("cc"); p.setAge(21); ArrayList<String> list = new ArrayList<>(); list.add("上网"); list.add("玩游戏"); list.add("coding"); p.setFavor(list); binding.setVariable("person", p); long begin=System.currentTimeMillis(); Object result = gse.run("h2.groovy", binding); long end=System.currentTimeMillis(); System.out.println(result); System.out.println("耗时:"+(end-begin)); } }
最后的输出:
<person name='cc'> <age>21</age> <favor>上网</favor> <favor>玩游戏</favor> <favor>coding</favor> </person> 耗时:438
--------------------分割线--------------------------
以上groovy代码中有个疑问
for(def f : person.favor){ "favor" f }
这一段中 如果写成
"f" f 就会报错 这个在groovyConsole中也是一样的 也就是 ""内的必须不是和参数一样的名字 例如参数变成i 那么 "i" i是不允许的
此外写成 f f 也会错 要实现f f的效果 要写成 "${f}" f 这样才行
红字的补救方法也有:
tmp="i" print(["上网", "玩游戏", "coding"]) xml.info(id:a){ for(def i : ["上网", "玩游戏", "coding"]){ "${tmp}" i } }
红字的错误感觉怪怪的...
错误信息如下:
groovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (java.lang.String) values: [上网]
Possible solutions: wait(), any(), wait(long), split(java.lang.String), each(groovy.lang.Closure), count(java.lang.String)
Possible solutions: wait(), any(), wait(long), split(java.lang.String), each(groovy.lang.Closure), count(java.lang.String)
有谁知道为什么吗? 麻烦解答一下^_^
相关推荐
这篇名为“Groovy动态修改XML”的博文可能详细介绍了如何使用Groovy对XML文档进行动态修改。通常,这个过程包括以下步骤: 1. **解析XML**:首先,使用XMLSlurper或XMLParser将XML字符串或文件转换为Groovy的DOM...
脚本解析工具,可使用Groovy或Xquery解析JSON报文或XML报文
SpringBoot、Gradle、Maven、Java和Groovy是Java生态...- 在测试和配置管理中使用Groovy,如Spock测试框架和Grails配置。 理解并熟练掌握这些技术,有助于提升Java开发者的专业技能,更好地适应现代企业级开发的需求。
这里我们将深入探讨如何使用Groovy脚本语言作为嵌入式脚本模块,以及它在Java开发中的应用。 Groovy是一种基于Java平台的、面向对象的脚本语言,它具有简洁的语法,易于学习,同时又充分利用了Java的生态系统。由于...
Groovy 是一种强大的、动态的、基于Java平台的脚本语言,它被广泛用于简化Java开发,尤其是在构建脚本、自动化任务以及XML处理等方面。"groovy-xml-2.2.0-beta-1.zip" 文件是Groovy的一个版本,专注于XML处理功能,...
通过使用ROS脚本生成器4.62,开发者能够更专注于算法和逻辑设计,而不是花费大量时间在配置细节上。这不仅提高了开发效率,也使得团队协作变得更加流畅。同时,随着ROS生态的不断壮大,这类工具的持续更新和优化对于...
本篇文章将重点讲解如何使用Groovy调用Weka来生成决策树。 在Groovy中调用Weka,首先需要确保你的环境中已经安装了Weka库。这通常通过Maven或Gradle等构建工具添加依赖来实现。对于Maven,可以在pom.xml文件中添加...
- `pom.xml`:这是Maven项目的配置文件,可能会定义依赖项,如脚本引擎库,并配置构建过程以使用Java脚本API。 - `src`:这是源代码目录,可能包含使用Java脚本API的Java类或脚本文件。 - `lib`:这是库文件夹,通常...
job-dsl-playground, 使用Jenkins工作DSL调试Groovy脚本的应用程序 Jenkins工作DSL游乐场http://job-dsl.herokuapp.com/使用 Jenkins工作DSL插件调试Groovy脚本的应用程序。 允许用户使用DSL创建作业并查看生成的XML...
在“maven配置java项目使用groovy做源码.zip”中,我们可能会看到`pom.xml`文件包含了特定的配置,使得Maven能够识别并处理Groovy源码。 Groovy是一种动态类型的、面向对象的脚本语言,它可以无缝地与Java代码集成...
这通常涉及到Spring的ScriptFactory和ScriptTemplate接口,或者使用GroovyShell或GroovyScriptEngine来解析和执行Groovy脚本。 为了实现远程加载,我们可以利用HTTP或者FTP服务来获取Groovy脚本文件,然后在Spring...
Groovy脚本可以通过读取数据库表结构,或者解析JSON、XML等数据格式,获取到字段信息,然后根据这些信息动态生成Java类。通常,一个POJO类会包含属性(fields)、getter和setter方法,以及可能的构造函数。Groovy的...
Groovy是一种动态、开源的编程语言,它是Java平台上的一个重要的补充。Groovy结合了Python、Ruby和...在Java项目中引入这个库,你可以轻松地集成Groovy脚本,提升开发效率,同时得益于其动态特性和强大的库支持。
例如,我们可以在启动时根据环境变量或配置文件动态生成Groovy脚本,然后通过`GroovyBeanDefinitionReader`加载这些动态定义。 此外,Groovy的动态类型特性使得我们可以避免在Bean定义中指定类型,Spring会自动推断...
4. 测试:Spock测试框架使用Groovy编写,提供了富有表达力的测试语句,简化了测试代码的编写。 5. 容器管理:在Apache Kafka、Cassandra等大数据处理系统中,Groovy用于配置和管理容器。 四、Groovy与Java的交互 ...
4. **Groovy Ant任务**:Groovy SDK包含了一些Ant任务,允许你在Ant构建脚本中直接使用Groovy,比如运行Groovy脚本、编译Groovy源代码等。 5. **Groovy类库**:Groovy标准库提供了一系列的类和模块,涵盖了集合操作...
Groovy是一种基于Java平台的、动态的、面向对象的编程语言,它被广泛用于脚本编写、自动化任务、测试等领域。在Groovy中发送HTTP请求是开发者经常需要进行的操作,尤其是在进行API测试或者集成第三方服务时。下面...
- **Groovyc**: 编译Groovy脚本到Java字节码。 - **Groovysh**: 命令行界面,支持即时执行Groovy命令。 - **GroovyConsole**: GUI控制台,提供简单的编辑功能。 #### 六、基本语法 - **语句结尾**:尽管Groovy允许...