java调用groovy步骤

本文介绍了Groovy,一种可以在JVM中执行的动态语言,如何通过Java执行Groovy脚本实现热部署,以及如何使用GroovyClassLoader动态编译和加载Groovy类。步骤包括引入依赖、创建接口和Groovy脚本,展示了Groovy的动态特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

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;
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值