java调用groovy步骤

简介

groovy 是用于jvm 执行的一种动态语言,既可以用于面向对象编程又可以作为一种脚本语言使用;

groovy特性

可以用java 执行groovy脚本动态编码,代码修改达到不重启服务的目的(类似热部署)

核心特性:

GroovyClassLoader 是一个定制的类装载器,用于解释和加载java中的groovy类

使用步骤:

1、引入groovy依赖

        <!--Groovy脚本依赖-->
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy</artifactId>
            <version>2.5.14</version>
        </dependency>

2、创建接口

public interface CallAnalysis {
     default void load() {
    }
}

3、在resources目录下创建.groovy文件

package groovy

import com.example.groovy.testgroovy.task.CallAnalysis
import groovy.util.logging.Slf4j

@Slf4j
class CallAnalysisImpl implements CallAnalysis{

    @Override
    void load() {
        log.info("我被Groovy脚本加载...")
    }
}

4、创建Groovy脚本装载类,动态解析脚本为Class

package com.example.groovy.testgroovy.task;

import groovy.lang.GroovyClassLoader;

public class GroovyUtils {

    private final static ClassLoader classLoader = GroovyUtils.class.getClassLoader();//获取当前类装载器
    //ClassLoader:就是类的装载器,它使JVM可以动态的载入Java类,JVM并不需要知道从什么地方(本地文件、网络等)载入Java类,这些都由ClassLoader完成。

    public final static GroovyClassLoader groovyClassLoader = new GroovyClassLoader(classLoader);
    //GroovyClassLoader:负责在运行时编译groovy源代码为Class的工作,从而使Groovy实现了将groovy源代码动态加载为Class的功能。

    /**
     * .
     * 获取实例化对象
     * @param script groovy脚本内容
     * @param <T>
     * @return
     * @throws IllegalAccessException
     * @throws InstantiationException
     */
    public static <T> T instanceTaskGroovyScript(String script) throws IllegalAccessException, InstantiationException {
        Class taskClz = groovyClassLoader.parseClass(script);
        T instance = (T) taskClz.newInstance();
        return instance;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Java调用Groovy包,需要使用Groovy的编译器API。下面是调用Groovy包的步骤: 1. 在Java项目中添加对Groovy库的依赖。 2. 编写Groovy代码,并将其保存为Groovy脚本或类。 3. 在Java中创建GroovyShell对象,将Groovy脚本或类加载到该对象中。 4. 使用GroovyShell对象执行Groovy脚本或类中的方法。 下面是一个简单的示例: 首先,添加对Groovy库的依赖,例如使用Maven添加以下依赖: ``` <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>2.5.6</version> </dependency> ``` 然后,编写一个Groovy类,例如: ``` package com.example.groovy class Greeter { String greeting(String name) { return "Hello, $name!" } } ``` 将Groovy类保存在`src/main/resources/com/example/groovy/Greeter.groovy`。 接下来,在Java中加载Groovy类并执行其中的方法,例如: ``` import groovy.lang.GroovyClassLoader; import groovy.lang.GroovyObject; public class Main { public static void main(String[] args) throws Exception { GroovyClassLoader loader = new GroovyClassLoader(); Class groovyClass = loader.parseClass(Main.class.getResource("com/example/groovy/Greeter.groovy")); GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance(); String result = (String) groovyObject.invokeMethod("greeting", "World"); System.out.println(result); } } ``` 在上面的示例中,首先创建了一个GroovyClassLoader对象,并使用它加载了Groovy类。然后创建了一个GroovyObject对象,并使用它调用Groovy类中的`greeting`方法。最后,输出了方法的返回值。 希望这个例子可以帮助你理解如何在Java调用Groovy包。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值