Java动态脚本Groovy的特性是什么
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要为大家展示了"Java动态脚本Groovy的特性是什么",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Java动态脚本Groovy的特性是什么"
千家信息网最后更新 2026年11月02日Java动态脚本Groovy的特性是什么1.Groovy特性
2.核心涉及
3.Java与Groovy转换
第一步:引入Groovy依赖
第二步:创建interface接口声明方法
第三步:在resources目录下创建.groovy文件
第四步:创建Groovy脚本装载类,动态解析脚本为Class
第五步:读取脚本内容,执行脚本
4.Groovy特性验证
第一步:将之前Groovy脚本数据修改。存于数据库表中,动态加载脚本
第二步:数据库表中:添加、查询Groovy脚本,动态加载执行
这篇文章主要为大家展示了"Java动态脚本Groovy的特性是什么",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Java动态脚本Groovy的特性是什么"这篇文章吧。
1.Groovy特性
可将java代码在Groovy脚本动态编码、代码被修改达到不重启服务的目的(类似于热部署)
2.核心涉及
ClassLoader:就是类的装载器,它使JVM可以动态的载入Java类,JVM并不需要知道从什么地方(本地文件、网络等)载入Java类,这些都由ClassLoader完成。GroovyClassLoader:动态地加载一个脚本并执行它的行为。GroovyClassLoader是一个定制的类装载器,负责解释加载Java类中用到的Groovy类。
3.Java与Groovy转换
第一步:引入Groovy依赖
org.codehaus.groovy groovy 2.5.14
第二步:创建interface接口声明方法
public interface CallAnalysis { default void load() { }}第三步:在resources目录下创建.groovy文件
package groovyimport com.example.groovy.testgroovy.task.CallAnalysisimport groovy.util.logging.Slf4j@Slf4jclass CallAnalysisImpl implements CallAnalysis{ @Override void load() { log.info("我被Groovy脚本加载...") }}第四步:创建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 * @return * @throws IllegalAccessException * @throws InstantiationException */ public static T instanceTaskGroovyScript(String script) throws IllegalAccessException, InstantiationException { Class taskClz = groovyClassLoader.parseClass(script); T instance = (T) taskClz.newInstance(); return instance; }} 第五步:读取脚本内容,执行脚本
package com.example.groovy.testgroovy.task;import lombok.extern.slf4j.Slf4j;import org.apache.commons.io.FileUtils;import org.springframework.stereotype.Component;import java.io.File;import java.io.IOException;@Slf4j@Componentpublic class CallAnalysisGroovyTask { /** * . * 读取脚本内容 * * @return */ public static String getGroovy() { String context = ""; try { String path = "E:\\IDEAFile\\testgroovy\\src\\main\\resources\\groovy\\CallAnalysisImpl.groovy"; context = FileUtils.readFileToString(new File(path));//将脚本内容转为字符串 } catch (IOException e) { log.error("file is not found[{}]", e); } return context; } /** * . * 执行groovy脚本 * * @param script */ public static void execGroovy(String script) { try { CallAnalysis objClass = GroovyUtils.instanceTaskGroovyScript(script);//获取实例对象 objClass.load();//调用脚本方法 } catch (Exception t) { log.error("execGroovy file {} error", script); } } /** * . * main方法 * @param args */ public static void main(String[] args) { System.out.println("=================="); CallAnalysisGroovyTask task = new CallAnalysisGroovyTask(); String script = task.getGroovy();//获取脚本 execGroovy(script);//实例化脚本,执行方法 System.out.println("=================="); }}
4.Groovy特性验证
利用Groovy脚本特性,不重启服务,实时修改数据
第一步:将之前Groovy脚本数据修改。存于数据库表中,动态加载脚本
@Slf4jclass CallAnalysisImpl implements CallAnalysis { private int anInt = 10; private int bnInt = 10; @Override void load() { log.info("当前类:[{}]", this.getClass().getName()) log.info("我被Groovy脚本加载...") log.info("计算结果:[{}]", (anInt + bnInt)) }}第二步:数据库表中:添加、查询Groovy脚本,动态加载执行
/** * . * 读取脚本,进行入库操作 * * @return */ @GetMapping("/saveScript") public String saveScript() { String scriptStr = callAnalysisGroovyTask.getGroovy(); Script script = newScript();//实体类对象 script.setScript(scriptStr);//脚本内容 script.setRuleId("1");//规则id script.setScriptName("演示一");//脚本名称 service.save(script); return "添加成功"; } /** * . * 从数据库表中,动态获取脚本 * * @param ruleId 规则id * @return 脚本内容 */ @GetMapping("/groovy") public String groovy(final String ruleId) { Script scr = scriptService.findScriptByRuleId(ruleId);//根据规则id查询 String scriptStr = scr.getScript(); callAnalysisGroovyTask.execGroovy(scriptStr); return scriptStr; }添加结果:

查询结果、控制台执行结果:
第三步:多次修改表数据值,查看执行结果
以上是"Java动态脚本Groovy的特性是什么"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
脚本
动态
内容
特性
数据
结果
装载
方法
实例
对象
数据库
文件
篇文章
规则
查询
代码
地方
就是
源代码
网络
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海挚品互联网科技有限公司
互联网佳科技有限公司
智能科技公司是互联网公司吗
互联网最新的科技有限公司
与互联网科技公司
互联网络科技有限公司
卓越科技(互联网 )
奇士达互联网科技
苏州大垚互联网科技
宁波青枫互联网科技有限公司
中国的互联网科技企业的崛起
语蝶互联网科技有限公司
互联网科技商业
企晟互联网信息科技有限公司
互联网科技的全部知识
深圳艾果互联网通讯科技
阿里互联网科技企业
华中科技大学互联网的牛人
济南小医互联网科技有限公司招聘
互联网高科技绘画
保险科技 互联网保险
深圳恒合互联网络科技有限公司
互联网巨头反垄断金融科技
互联网科技革命
互联网科技logo
新华互联网科技校企合作
互联网科技公司的市场部门
燊美集互联网科技有限公司
用友工业互联网科技发展
北京天晋互联网科技有限公司