首页 > 其他分享 >GroovyClassLoader的简单使用

GroovyClassLoader的简单使用

时间:2023-10-03 12:33:17浏览次数:46  
标签:aClass 简单 System User 使用 import public GroovyClassLoader

前言

GroovyClassLoader 也是 Java 的一个类加载器实现,它可以将一段源码解析为 Class。xxl-job 中的 GlueFactory 就使用了此类加载器来支持 GLUE 运行模式(任务以源码方式维护在调度中心,支持通过Web IDE在线更新,实时编译和生效,因此不需要指定JobHandler)。

使用

添加maven依赖

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

要执行的源码 resources/User.txt

public class User {
	public void hi() {
		System.out.println("Hello User.hi");
	}
}

测试代码

import groovy.lang.GroovyClassLoader;
import org.apache.commons.io.IOUtils;

import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.Objects;

public class TestGroovy {
    public static void main(String[] args) throws Exception {
        InputStream inputStream = TestGroovy.class.getClassLoader().getResourceAsStream("User.txt");
        if (Objects.nonNull(inputStream)) {
            String codeScoure = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
            GroovyClassLoader groovyClassLoader = new GroovyClassLoader();
            Class aClass = groovyClassLoader.parseClass(codeScoure);
            System.out.println(aClass.getClassLoader());
            Object instance = aClass.getConstructor().newInstance();
            System.out.println(instance);
            aClass.getMethod("hi").invoke(instance);
        }else {
            System.out.println("parse error");
        }
    }
}

可以正常执行 User 类的 hi 方法。

参考

xxl-job 官方文档

标签:aClass,简单,System,User,使用,import,public,GroovyClassLoader
From: https://www.cnblogs.com/strongmore/p/17740982.html

相关文章

  • 【保姆级安装使用教程#1】Xshell与Xftp的下载、安装和使用
    1.下载官网下载地址:==Xshell与Xftp下载地址==当然也可以用鄙人的百度网盘连接下载这是链接:链接百度网盘下载Xshell与Xftp分别下载Xshell与Xftp2.安装Xshell打开Xshell安装包点击下一步点击接受许可,并进行下一步点击浏览更换安装地址,选择安装地址时要多建一个Xshell文件夹!!!,并进行......
  • XXL-JOB简单使用
    简介学习简单、轻量级、易扩展、动态生效、调度中心HA、执行器HA、弹性扩容缩容、路由策略、故障转移、阻塞处理策略、任务超时控制、任务失败重试、任务失败告警、分片广播任务、动态分片、事件触发等很多特性。使用下载源码gitee地址项目源码结构如下xxl-job-admin:调度中......
  • TX002-XAF特性属性使用方法
    1.[XafDisplayName("名称")](1)在类上面表示修改左侧菜单的名称(2)在字段属性上使用表示修改字段名称2.[ImageName("Actions_Forbid")](1)设置XAF内置图标,里面参数是图标ID3.[ModelDefault("AllowEdit","False")](1)设置不允许编辑,默认允许(2)也可以更改默认格式[ModelDefau......
  • Golang gin Cookie的使用
    Cookie介绍HTTP是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分两次请求是否由同一个客户端发出Cookie就是解决HTTP协议无状态的方案之一,中文是小甜饼的意思Cookie实际上就是服务器保存在浏览器上的一段信息。浏览器有了Cookie之后,每次向服务器发送请求时都会同......
  • Golang Array 数组使用注意事项和细节
    在go数组当中,长度是数据类型的一部分[3]int  *[3]int  数组使用注意事项和细节1)数组是多个相同类型数据的组合,一个数组一旦声明/定义了,其长度是固定的,不能动态变化vara[3]inta[0]=1.1这样是不行的,必须是整数2)vararr[]int这时arr就是一个slice切片(如果[]里面没......
  • nvm 安装与使用(实现Nodejs版本切换,及找不到npm的问题)
    https://blog.csdn.net/sxk1101/article/details/129208573除文章操作,别忘记把 nvm安装与使用(实现Nodejs版本切换,及找不到npm的问题)......
  • 实验1 C语言输入输出和简单程序编写
    实验任务11.1代码1//打印一个字符小人23#include<stdio.h>4intmain()5{6printf("O\n");7printf("<H>\n");8printf("II\n");9printf("O\n");10printf("<H>......
  • 工业互联网-基于OPC 的简单数采系统设计之二
    1、客户端结构客户端主界面Load方法从配置文件中获取产线编号,使用LineBuilder类静态方法Build创建单例引擎,初始化引擎,引擎中创建客户端到服务端连接,包含mesService和opcService,其中opcService是双向通讯。LineBuilder类接着便初始化产线站点,站点属性,站点脚本。LineBuilder类publi......
  • openGauss学习笔记-87 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-M
    openGauss学习笔记-87openGauss数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用简单概述使用MOT非常简单,以下几个小节将会进行描述。openGauss允许应用程序使用MOT和基于标准磁盘的表。MOT适用于最活跃、高竞争和对吞吐量敏感的应用程序表,也可用于所有应用程序的表。......
  • 如何更好地使用Bito
    我的需求:我要查询acc_repay.repayment_plan表的term为0、term_status为UNDUE、term_penalty大于0数据,并且acc_repay.repayment_plan表的due_bill_no存在于acc_cus.cus_user_base表先看一个反面例子:提问:MySQL根据acc_cus.cus_user_base表的due_bill_no字段,查询出acc_repay.repay......