首页 > 编程语言 > 详细

groovy执行java代码字符串

时间:2021-06-02 15:26:26      阅读:9      评论:0      收藏:0      [点我收藏+]

groovy执行java代码字符串

在使用xxl-job的时候发现有一个glue模式可以直接运行java代码字符串,感到好奇,看了下源码发现使用的是groovy工具类实现的。这里记录一下。

依赖

<dependency>
  <groupId>org.codehaus.groovy</groupId>
  <artifactId>groovy</artifactId>
  <version>2.5.3</version>
</dependency>

代码

定义一个接口:

package com.util.javacode;

public interface IGroovyHandler {

	void handle(String obj);
	
}

测试代码:

package com.util.javacode;

import groovy.lang.GroovyClassLoader;

/**
 * 参考自 xxl-job 的 glue 模式
 * com.xxl.job.core.glue
 * @author bart
 *
 */
public class TestsGroovy {

	public static void main(String[] args) throws Exception{
		test_01();
	}
	
	/**
	 * 注意package必须存在!否则报错!!!
	 * @throws Exception
	 */
	private static void test_01() throws Exception{
		String codeSource = "package com.util.javacode;\r\n" + 
				"public class DemoHandler implements IGroovyHandler {\r\n" + 
				"	@Override\r\n" + 
				"	public void handle(String obj) {\r\n" + 
				"		System.out.println(\"############### \"+ obj);\r\n" + 
				"	}\r\n" + 
				"}";
		GroovyClassLoader groovyClassLoader = new GroovyClassLoader();
		Class<?> clazz = groovyClassLoader.parseClass(codeSource);
		if (clazz != null) {
			Object instance = clazz.newInstance();
			if (instance!=null) {
				if (instance instanceof IGroovyHandler) {
					IGroovyHandler handler = (IGroovyHandler) instance;
					handler.handle("天气不错!");
				} else {
					System.err.println("转换失败!");
				}
			}
			}
	}
}

输出:

############### 天气不错!

参考

xxl-job的glue模式

groovy执行java代码字符串

原文:https://www.cnblogs.com/bartggg/p/14840943.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!