- 浏览: 1263133 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (896)
- spring4 (14)
- hibernate3 (26)
- spring2 (35)
- struts2 (55)
- struts1 (15)
- 设计模式 (15)
- java (172)
- mybatis3 (11)
- sql (17)
- mysql (13)
- jbpm (10)
- J2EE (45)
- tools (29)
- js (83)
- 数据结构 (13)
- Html (26)
- web (22)
- flex (33)
- Oracle (57)
- linux (49)
- 算法 (6)
- 其它 (12)
- easyui (1)
- bootstrap (13)
- xml (2)
- tomcat (1)
- redis (10)
- activemq (2)
- webservice (11)
- maven (2)
- springboot (1)
- ubuntu (1)
- python (14)
- rocketmq (1)
- springcloud (10)
- opencv (1)
最新评论
-
mike_eclipse:
Hashtable是线程不安全的吗?好像是线程安全的吧?
多线程之集合类 -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
lodop打印控件 -
xingcxb:
经过测试,假的,依旧会出现中文乱码!!!!store方法里面采 ...
java 读写Properties文件,不会出现中文乱码 -
tiger20111989:
...
Spring注解方式管理事务 -
zw7534313:
...
js 文字上下滚动 无间断循环显示
//Groovy超强的Java动态计算能力 groovy-2.5.12.jar apache 表达式语言
public class GroovyTest {
public static void main(String[] args) {
GroovyShell shell = new GroovyShell();
Object result = shell.evaluate("(1+5)/2");
System.out.println(result);
Binding binding = new Binding();
binding.setVariable("p",3.1415926f);
binding.setVariable("r",5);
GroovyShell shell2 = new GroovyShell(binding);
result = shell2.evaluate("p*r*r");
System.out.println(result);
result = shell2.evaluate("Math.round(p*r*r)");
System.out.println(result);
String s = "2>3||3>4&&5<4";
result = shell.evaluate(s);
System.out.println(result);
// String javacode="SimpleDateFormat.getDateInstance().format(new Date())";
// result = shell.evaluate(javacode);
// System.out.println(result);
//shell.parse(new File(//))
Script script = shell2.parse("def join(String[] list) {return list.join('--');}");
String joinString = (String)script.invokeMethod("join", new String[]{"A1","B2","C3"});
System.out.println(joinString);
//反射动态调用groovy类
GroovyTest g=new GroovyTest();
// g.java2groovy();
g.grooyScript();
//自定义函数
}
private void java2groovy() {
//获取 groovy 类的反射对象
ClassLoader parent = getClass().getClassLoader();
GroovyClassLoader loader = new GroovyClassLoader(parent);
Class groovyClass=null;
try {
groovyClass = loader.parseClass(new File("G:\\neweclipse\\workspace\\bsh\\src\\bsh\\GroovyDemo.groovy"));
//实例化 GroovyDemo 类
GroovyObject groovyObj = (GroovyObject) groovyClass.newInstance();
//调用 groovyDemo 成员方法
System.out.println( groovyObj.invokeMethod("sayHello",null));
} catch (CompilationFailedException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
//自定义函数
void grooyScript() {
String path = "G:\\neweclipse\\workspace\\bsh\\src\\bsh\\";
GroovyScriptEngine gse;
try {
gse = new GroovyScriptEngine(path);
Binding binding = new Binding();
binding.setVariable("input", "Groovy");
gse.run("GroovyDemo.groovy", binding);
System.out.println(binding.getVariable("output"));
} catch (Exception e) {
e.printStackTrace();
}
}
//自定义函数
void cusFunction() {
Binding binding = new Binding();
// if(vars!=null) {
// vars.keySet().forEach(name ->
// binding.setVariable(name, vars.get(name))
// );
// }
CompilerConfiguration cfg = new CompilerConfiguration();
cfg.setScriptBaseClass(DateUtils.class.getName());
GroovyShell shell = new GroovyShell(binding,cfg);
try {
Script script = shell.parse(buildScript());
return script.run();
} catch (Exception ex) {
logger.error("catch script execution error, script:"+buildScript(), ex);
return 0;
}
}
}
public class GroovyTest {
public static void main(String[] args) {
GroovyShell shell = new GroovyShell();
Object result = shell.evaluate("(1+5)/2");
System.out.println(result);
Binding binding = new Binding();
binding.setVariable("p",3.1415926f);
binding.setVariable("r",5);
GroovyShell shell2 = new GroovyShell(binding);
result = shell2.evaluate("p*r*r");
System.out.println(result);
result = shell2.evaluate("Math.round(p*r*r)");
System.out.println(result);
String s = "2>3||3>4&&5<4";
result = shell.evaluate(s);
System.out.println(result);
// String javacode="SimpleDateFormat.getDateInstance().format(new Date())";
// result = shell.evaluate(javacode);
// System.out.println(result);
//shell.parse(new File(//))
Script script = shell2.parse("def join(String[] list) {return list.join('--');}");
String joinString = (String)script.invokeMethod("join", new String[]{"A1","B2","C3"});
System.out.println(joinString);
//反射动态调用groovy类
GroovyTest g=new GroovyTest();
// g.java2groovy();
g.grooyScript();
//自定义函数
}
private void java2groovy() {
//获取 groovy 类的反射对象
ClassLoader parent = getClass().getClassLoader();
GroovyClassLoader loader = new GroovyClassLoader(parent);
Class groovyClass=null;
try {
groovyClass = loader.parseClass(new File("G:\\neweclipse\\workspace\\bsh\\src\\bsh\\GroovyDemo.groovy"));
//实例化 GroovyDemo 类
GroovyObject groovyObj = (GroovyObject) groovyClass.newInstance();
//调用 groovyDemo 成员方法
System.out.println( groovyObj.invokeMethod("sayHello",null));
} catch (CompilationFailedException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
//自定义函数
void grooyScript() {
String path = "G:\\neweclipse\\workspace\\bsh\\src\\bsh\\";
GroovyScriptEngine gse;
try {
gse = new GroovyScriptEngine(path);
Binding binding = new Binding();
binding.setVariable("input", "Groovy");
gse.run("GroovyDemo.groovy", binding);
System.out.println(binding.getVariable("output"));
} catch (Exception e) {
e.printStackTrace();
}
}
//自定义函数
void cusFunction() {
Binding binding = new Binding();
// if(vars!=null) {
// vars.keySet().forEach(name ->
// binding.setVariable(name, vars.get(name))
// );
// }
CompilerConfiguration cfg = new CompilerConfiguration();
cfg.setScriptBaseClass(DateUtils.class.getName());
GroovyShell shell = new GroovyShell(binding,cfg);
try {
Script script = shell.parse(buildScript());
return script.run();
} catch (Exception ex) {
logger.error("catch script execution error, script:"+buildScript(), ex);
return 0;
}
}
}
发表评论
-
服务端推送multipart/x-mixed-replace
2023-12-07 15:26 249往网页分批推送数据:boundary=END,总头--> ... -
使用httpclient提交post请求
2020-08-22 08:35 387import org.apache.http.HttpEnt ... -
bsh(BeanShell)动态执行java代码
2020-06-25 07:59 866import java.util.Date; /** * B ... -
延时任务处理订单超时方案
2020-05-23 16:05 897JDK的延迟队列 方案是利用JDK自带的DelayQueue ... -
HttpsURLConnection
2020-04-29 10:51 714import java.net.URL; import jav ... -
Log4j的ConversionPattern参数的格式含义
2020-04-22 14:23 418Log4j的ConversionPattern参数的格式含义 ... -
thread 的join
2020-04-16 18:02 314java里面也有这个方法,Java Thread中, join ... -
GZIPOutputStream压缩文件
2020-04-16 17:52 698import java.io.BufferedReader; ... -
软引用SoftReference的使用
2020-04-16 15:48 498软引用SoftReference的使用 SoftRefere ... -
Fastjson
2020-04-15 14:53 318import java.util.ArrayList; imp ... -
6位随机数
2020-04-14 09:47 703import org.apache.commons.lang. ... -
Java加密和数字签名
2020-04-14 09:38 345Java加密和数字签名 消息摘要 这是一种与消息认证码结合使 ... -
DES加密、解密
2020-04-02 16:42 358import java.security.SecureRand ... -
Java利用 AES/ECB/PKCS5Padding 算法加解密
2020-04-02 11:19 931对称加密、解密 import javax.crypto.Ci ... -
springboot中使用springmvc的拦截器-HandlerInterceptorAdapter
2018-12-13 16:04 1293springboot中使用springmvc的拦截器-Hand ... -
aspectj连接点
2018-12-13 15:55 512切点指示符 切点指示符 ... -
spring之AspectJ面向切面编程
2018-12-13 14:15 814spring之AspectJ面向切面编程 面向切面编程,实现 ... -
设计模式之策略模式
2018-05-30 21:17 482public class Person { priva ... -
使用反射将对象转Map
2018-05-27 17:33 648//使用反射将对象转Map<String, St ... -
设计模式之原型模式
2018-05-20 18:42 455/** * 原型设计模式:原型模式主要用于对象的复制 ...
相关推荐
Groovy 调用 Java 类groovy 调用 Java class 十分方便,只需要在类前导入该 Java 类,在 Groovy 代码中就可以无缝使用该
Java调用Groovy,实时动态加载数据库groovy脚本,java读取mongoDB的groovy脚本,加载实时运行,热部署
java 动态脚本语言 精通 Groovy
Groovy环境搭建教程中的例子工程,纯Java、纯Groovy以及Java+Groovy混合 教程参考:http://blog.csdn.net/rcom10002/archive/2011/06/26/6568557.aspx
基于groovy框架,进行的简单java动态代码执行;附件中包含java调用groovy具体的代码实现,及测试方法。
Making Java Groovy is a practical handbook for developers who want to blend Groovy into their day to day work with Java It starts by introducing the key differences between Java and Groovy and how you...
Java中使用Groovy的三种方式,详细见我的博客。
概述主要介绍Java、spring与groovy结合使用,高清英文版本
基于groovy实现 java脚本动态编译、部署、发布;可以通过脚本直接调用dubbo接口
软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备...
Groovy 是用于Java虚拟机的一种敏捷的动态语言,它结合了Python、Ruby和Smalltalk的许多强大的特性。它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多...
groovy-se-study 本工程用于学习groovy和java-se的调用
groovy 敏捷 开发 动态 语言 急速 web 应用 开发
Making Java Groovy
虽然 Groovy 的语法源于 Smalltalk 和 Ruby 这类语言的理念,但是可以将它想像成 Java 语言的一种更加简单、表达能力更强的变体。(在这点上,Ruby 与 Groovy 不同,因为它的语法与 Java 语法差异很大。) 许多 Java...
Making Java Groovy Kenneth A. Kousen 1.Easier Java 2.Closures, builders, and metaprogramming 3.Gradle for builds, Spock for testing 4.Groovy frameworks like Grails and Griffon 源码
下载的资源文件中,封装了并发计算以及内存溢出解决方案的工具类GroovyEngine.java,调用示例: GroovyEngine engine = GroovyEngine.getInstance(); engine.put("a",1); engine.put("b",2); Object v1 = engine....
groovy 和 java 的区别写法上:非常随意,没有 java 那么多的限制,例如 不用写逗号,return 可写 可不写,可以直接当做脚本来写,main
java运行groovy 环境,搭建方便自己练习groovy使用 与后续定时调度动态代码做准备
SpringBoot-Gradle-Maven-Java-Groovy:SpringBoot通过不同构建工具和语言实现。