OpenJWeb快速开发平台中Groovy动态语言调用示例

使用Groovy动态语言,可以直接执行java源代码。这样我们可以在程序中直接用字符串拼凑java代码来执行,当然可以把执行代码放在文本文件中,在运行的时候读取出来执行。

下面是代码示例:

package org.openjweb.core.util;

import groovy.lang.GroovyClassLoader;

 
import org.openjweb.core.service.IGroovyService;

public class GroovyUtil
{
 //http://blog.chenlb.com/2010/06/java-invoke-groovy.html
 private static ClassLoader cl = GroovyUtil .class.getClassLoader();
 private static GroovyClassLoader groovyCl = new GroovyClassLoader(cl);
 
 public static String execJavaCode(String code)
 {
  String sReturn = "";
  try
  {
   //从文件中读取
   //Class groovyClass = groovyCl.parseClass(new File("D:/project/openjweb/src/java/org/openjweb/groovy/Foo.groovy"));
   //直接使用Groovy字符串,也可以获得正确结果
   //Class groovyClass = groovyCl.parseClass("package org.openjweb.groovy; \r\n import org.openjweb.core.groovy.test.IFoo;\r\n class Foo implements IFoo {public Object run(Object foo) {return 23}}");
   Class groovyClass = groovyCl.parseClass("package org.openjweb.groovy; \r\n import org.openjweb.core.service.*;\r\n import org.openjweb.core.util.*;\r\n class GroovyServiceImpl implements IGroovyService {public String execTagScript () {"+code+"}}");//这个返回true
            IGroovyService service = (IGroovyService) groovyClass.newInstance();
            sReturn = service.execTagScript( );
   //System.out.println(foo.run(new Integer(2)));
  }
  catch (Exception e)
  {
   e.printStackTrace();
  }
  return sReturn;
 }


}

为了方便接口调用,单独写了一个接口类:

package org.openjweb.core.service;

public interface IGroovyService
{
 public String execTagScript() throws Exception;

}

 

在程序中可在execJavaCode方法中传入Java代码执行。

关于groovy的安装非常简单,只要下载groovy安装即可。

更多OpenJWeb技术讨论请访问OpenJWeb主站http://www.openjweb.com/

你可能感兴趣的:(groovy,快速开发平台,openjweb)