首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏FunTester

    GroovyShell 应用实践

    GroovyShell 介绍 GroovyShell 是 Groovy 中的一个强大工具类,允许在运行时动态执行 Groovy 脚本。这对于需要在应用程序中执行动态代码或脚本的场景尤其有用。 GroovyShell 实践 示例 1:基本用法 import groovy.lang.GroovyShell def shell = new GroovyShell() def result = shell.evaluate GroovyShell 允许我们通过传递变量来动态控制脚本行为。 GroovyShell 执行多行代码的能力。 此外,GroovyShell 还可以处理数据计算和分析任务,以简洁的脚本实现强大的数据处理功能。以下总结了 GroovyShell 的几个核心应用场景。

    42610编辑于 2025-01-23
  • 来自专栏韩曙亮的移动开发专栏

    【Groovy】Groovy 脚本调用 ( Java 类中调用 Groovy 脚本 )

    Groovy 类中调用 Groovy 脚本 1、参考 Script#evaluate 方法分析 Groovy 类中调用 Groovy 脚本 2、创建 Binding 对象并设置 args 参数 3、创建 GroovyShell 在类方法中调用 Groovy 脚本 ; 在 evaluate 方法中 , 首先创建 GroovyShell 实例对象 , 然后执行该实例对象的 evaluate 方法 , 传入要调用的 Groovy shell = new GroovyShell(getClass().getClassLoader(), binding); return shell.evaluate(file); } } 2、创建 Binding 对象并设置 args 参数 此处创建 GroovyShell 实例对象 涉及到传入 Binding 类型的参数 , 这个参数是 绑定作用域 变量 参数 ; 在 对象并执行 Groovy 脚本 首先 , 创建 GroovyShell 对象 , 在构造函数中 , 需要传入 Binding 对象 ; GroovyShell shell = new GroovyShell

    3.3K30编辑于 2023-03-30
  • 来自专栏程序员的成长之路

    炫技Groovy!SpringBoot中的动态编程实战

    GroovyShell groovyShell = new GroovyShell(); //装载解析脚本代码 Script script = groovyShell.parse GroovyShell groovyShell = new GroovyShell(); //装载解析脚本代码 Script script = groovyShell.parse GroovyShell groovyShell = new GroovyShell(); //装载解析脚本代码 Script script = groovyShell.parse groovyShell = new GroovyShell(groovyBinding); Script script = groovyShell.parse(templateScript) 导致OOM的原因并不止GroovyShell、Script等实例过多,经过查阅资料得知,如果脚本中的Java代码也创建了对象或者new了实例,即使销毁了GroovyShell也不会销毁脚本中的对象。

    4.1K10编辑于 2024-04-18
  • 来自专栏韩曙亮的移动开发专栏

    【Groovy】Groovy 脚本调用 ( Groovy 类中调用 Groovy 脚本 | 参考 Script#evaluate 方法 | 创建 Binding 对象并设置 args 参数 )

    脚本 ---- 1、参考 Script#evaluate 方法分析 Groovy 类中调用 Groovy 脚本 可以参考 groovy.lang.Script 类的 evaluate 方法 , 通过 GroovyShell 在类方法中调用 Groovy 脚本 ; 在 evaluate 方法中 , 首先创建 GroovyShell 实例对象 , 然后执行该实例对象的 evaluate 方法 , 传入要调用的 Groovy */ public Object evaluate(File file) throws CompilationFailedException, IOException { GroovyShell shell = new GroovyShell(getClass().getClassLoader(), binding); return shell.evaluate(file); } } 2、创建 Binding 对象并设置 args 参数 此处创建 GroovyShell 实例对象 涉及到传入 Binding 类型的参数 , 这个参数是 绑定作用域 变量 参数 ; 在

    2.5K70编辑于 2023-03-30
  • 来自专栏Java随想录

    Groovy初学者指南

    在Java代码中,我们可以通过创建GroovyShell实例来执行Groovy代码。 [] args) { GroovyShell shell = new GroovyShell(); String script = "println 'Hello, Groovy { public static void main(String[] args) { GroovyShell shell = new GroovyShell(); try BindingBinding类是GroovyShell的一个关键组件,它提供了变量绑定和上下文环境。 通过Binding,我们可以在GroovyShell中定义变量,以及在Groovy代码中访问这些变量。

    1.3K30编辑于 2023-10-13
  • 来自专栏韩曙亮的移动开发专栏

    【Groovy】Groovy 脚本调用 ( Groovy 类中调用 Groovy 脚本 | 创建 GroovyShell 对象并执行 Groovy 脚本 | 完整代码示例 )

    文章目录 一、Groovy 类中调用 Groovy 脚本 1、创建 GroovyShell 对象并执行 Groovy 脚本 2、代码示例 二、完整代码示例 1、调用者 Groovy 脚本的类 2、被调用者 Groovy 脚本 3、执行结果 一、Groovy 类中调用 Groovy 脚本 ---- 1、创建 GroovyShell 对象并执行 Groovy 脚本 首先 , 创建 GroovyShell 对象 , 在构造函数中 , 需要传入 Binding 对象 ; def shell = new GroovyShell(getClass().getClassLoader(), binding) 然后 , 设置要调用的 Groovy 脚本对应的 File 文件对象 ; def file = new File("Script.groovy") 最后 , 调用 GroovyShell 对象的 evaluate binding.setVariable("args", ["arg0", "arg1"]) // 执行 Groovy 脚本 def shell = new GroovyShell

    2.9K10编辑于 2023-03-30
  • 来自专栏Java随想录

    Groovy 初学者指南

    在Java代码中,我们可以通过创建GroovyShell实例来执行Groovy代码。 String[] args) { GroovyShell shell = new GroovyShell(); String script = "println 'Hello GroovyScriptRunner { public static void main(String[] args) { GroovyShell shell = new GroovyShell Binding Binding类是GroovyShell的一个关键组件,它提供了变量绑定和上下文环境。 通过Binding,我们可以在GroovyShell中定义变量,以及在Groovy代码中访问这些变量。

    1.2K30编辑于 2023-10-16
  • 来自专栏Java技术进阶

    一文了解微服务低代码实现方式

    groovyShell = new GroovyShell(groovyBinding); String scriptContent = "import pers.doublebin.example.groovy.script.service.TestService 预设对象 在上一节中提到,groovy支持通过GroovyShell预设对象,在groovy动态脚本中直接调用预设对象的方法。 groovyShell = new GroovyShell(groovyBinding); String scriptContent = "def query = testService.testQuery (2L);\n" + "query"; Script script = groovyShell.parse(scriptContent); 对象,在提供的execute接口实现中用GroovyShell对象生成Script脚本对象,并调用Script的run()方法运行动态脚本并返回结果。

    1.7K20编辑于 2022-12-02
  • 来自专栏闷骚的程序员

    解决 Groovy 引起的一次 OOM 告警

    298) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268) at groovy.lang.GroovyShell.parseClass (GroovyShell.java:688) at groovy.lang.GroovyShell.parse(GroovyShell.java:700) at groovy.lang.GroovyShell.evaluate (GroovyShell.java:584) at groovy.lang.GroovyShell.evaluate(GroovyShell.java:623) at groovy.lang.GroovyShell.evaluate (GroovyShell.java:594) at org.springframework.scripting.groovy.GroovyScriptEvaluator.evaluate(GroovyScriptEvaluator.java

    94430编辑于 2023-10-23
  • 来自专栏韩曙亮的移动开发专栏

    【错误记录】Groovy工程中的文件查找策略 ( main 函数中需要使用 src/main/groovy/Script.groovy | Groovy 脚本直接使用代码相对路径 )

    <init>(GroovyCodeSource.java:108) at groovy.lang.GroovyShell.evaluate(GroovyShell.java:470) at JavaClass.startScript Groovy 脚本 , 需要使用 “src/main/groovy/Script.groovy” 路径 ; import groovy.lang.Binding; import groovy.lang.GroovyShell binding.setVariable("args", new String[]{"arg0", "arg1"}); // 执行 Groovy 脚本 GroovyShell shell = new GroovyShell(JavaClass.class.getClassLoader(), binding); File file = new File("src

    3.5K30编辑于 2023-03-30
  • 来自专栏韩曙亮的移动开发专栏

    【Groovy】Groovy 脚本调用 ( Groovy 脚本中调用另外一个 Groovy 脚本 | 绑定作用域 binding 变量分析 | Binding 类 variables 成员分析 )

    被调用者 Groovy 脚本 3、执行结果 一、绑定作用域 binding 变量分析 ---- 分析 groovy.lang.Script 类的 evaluate 方法源码 , 在该方法中 , 创建了一个 GroovyShell 对象 ; 在创建时 , 将本脚本的 Binding binding 成员传递给了该 GroovyShell 对象 ; Binding binding 成员中 , 保存了所有的 绑定作用域 变量 ; GroovyShell */ public Object evaluate(File file) throws CompilationFailedException, IOException { GroovyShell shell = new GroovyShell(getClass().getClassLoader(), binding); return shell.evaluate(file);

    1.7K20编辑于 2023-03-30
  • 来自专栏网络安全攻防

    JAVA安全之Groovy命令注入刨析

    groovy-all</artifactId><version>2.4.3</version></dependency> 构造代码如下: packagecom.al1ex;importgroovy.lang.GroovyShell + e.message;} };runCalculator()";shell.evaluate(script);}} 执行效果如下: 运行方式 Java代码中常用的运行groovy方式有如下几种: GroovyShell 基本介绍 GroovyShell是Groovy提供的一个强大工具,它可以用于动态执行Groovy代码片段,我们通过GroovyShell我们可以轻松地在Java程序中执行Groovy脚本并且能够与Java (groovy.lang)evaluate:627,GroovyShell(groovy.lang)evaluate:598,GroovyShell(groovy.lang)main:9,GroovyShellExample ,而部分场景中还涉及本地加载和远程加载两种方式,下面我们介绍本地加载方式: 加载方式1: 执行的Groovy脚本从本地加载执行: packagecom.al1ex;importgroovy.lang.GroovyShell

    1.8K10编辑于 2024-12-09
  • 来自专栏软件研发

    Groovy classes are not available on the class path. ABORTING INITIALIZATION

    示例代码-基于Java的Groovy应用程序javaCopy codeimport groovy.lang.GroovyShell;public class GroovyApplication { public static void main(String[] args) { // 创建一个GroovyShell对象 GroovyShell shell = new GroovyShell \n" + "println hello"; // 在GroovyShell中执行脚本 shell.evaluate(script 它使用​​GroovyShell​​类来执行Groovy脚本。在脚本中,我们定义了一个变量​​hello​​并打印出它的值。

    92920编辑于 2023-11-13
  • 来自专栏信息安全小学生

    Groovy 笔记

    Java集成 Java 调用 Groovy Eval groovy.util.Eval 类是最简单的用来在运行时动态执行 Groovy 代码的类,提供了几个静态工厂方法供使用,内部其实就是对GroovyShell Eval.x(4, "2*x"); // = 8 //带有三个绑定参数(x、y 和 z)的简单计算 Eval.xyz(4, 5, 6, "x*y+z"); // = 26 } } GroovyShell groovy.lang.GroovyShell 除了可以执行 Groovy 代码外,提供了更丰富的功能,比如可以绑定更多的变量,从文件系统、网络加载代码等。 GroovyShell shell = new GroovyShell(); //可以绑定更多变量 shell.setVariable("age",22); //直接求值 shell.evaluate(

    1.5K30发布于 2019-07-24
  • 来自专栏叔叔的博客

    Java调用Groovy

    public static void main(String[] args) throws Exception { Binding binding = new Binding(); GroovyShell shell = new GroovyShell(binding); binding.setVariable("name", "bo"); binding.setVariable("age

    1.6K30发布于 2018-07-25
  • 来自专栏码农架构

    大量类加载器创建导致诡异FullGC

    indy</classifier> <version>2.4.5</version> </dependency> 最终定位到出现问题的代码如下,当你配置分表的表达式后,每次执行查询操作,都会创建一个 GroovyShellGroovyShell 中,每次都会生成一个类加载器,来加载类 Script1,加载完后又无法被 GC 掉,导致内存泄露。 ).evaluate(Joiner.on("").join("{it -> \"", algorithmExpression, "\"}")); } 这里升级 sharding 新版本即可,新版本中 GroovyShell private static final GroovyShell SHELL = new GroovyShell(); ... } 这里还有个疑问,类加载器加载用完了并且状态是 dead 为什么不回收掉呢 HeapDumpOnOutOfMemoryError public static void main(String[] args) { for (int i = 0; i < 4000; i++) { new GroovyShell

    1.9K10发布于 2020-10-20
  • 来自专栏后端

    Java一分钟之-Groovy与Java混合编程

    实战代码示例在Java中调用Groovy脚本import groovy.lang.GroovyShell;import groovy.lang.Script;public class JavaCallsGroovy { public static void main(String[] args) { GroovyShell shell = new GroovyShell(); Script

    1.2K10编辑于 2024-06-13
  • 来自专栏韩曙亮的移动开发专栏

    【Groovy】Groovy 脚本调用 ( Groovy 脚本中调用另外一个 Groovy 脚本 | 调用 evaluate 方法执行 Groovy 脚本 | 参数传递 )

    */ public Object evaluate(File file) throws CompilationFailedException, IOException { GroovyShell shell = new GroovyShell(getClass().getClassLoader(), binding); return shell.evaluate(file);

    2.8K40编辑于 2023-03-30
  • 来自专栏写两行代码放松下

    使用Groovy实现Domain-Specific Languages 一

    //1 a binding is used to share data between the script and the calling classdef shell = new GroovyShell (binding) //2 a GroovyShell can be used with this bindingbinding.setVariable('x',1) / binding.getVariable('z') == 5 //5 and the `z` variable has been "exported" into the bindingbinding可以用来共享数据GroovyShell //1config.scriptBaseClass = 'MyBaseClass' //2def shell = new GroovyShell //4 greet()"""定义一个CompilerConfiguration指定脚本类创建GroovyShell

    856110编辑于 2022-07-10
  • 来自专栏一个会写诗的程序员的博客

    《Groovy极简教程》第2章 Groovy基础数据类型《Groovy极简教程》第2章 Groovy基础数据类型Groovy 交互命令行控制台基本数据类型

    交互命令行控制台 命令groovyConsole :启动图形交互控制台 命令groovysh :启动shell命令交互 你可以用下面的语句执行任何Groovy脚本: java groovy.lang.GroovyShell

    57620发布于 2018-08-20
领券