zoukankan      html  css  js  c++  java
  • 使用 Java 执行 groovy 脚本或方法

    1. 引入依赖

     <dependency>
                <groupId>org.codehaus.groovy</groupId>
                <artifactId>groovy-all</artifactId>
                <version>${groovy.version}</version>
            </dependency>

    2. 使用 Java 执行 groovy 脚本

     @ApiOperation(notes = "测试 groovy 脚本与占位符", value = "测试 groovy 脚本与占位符")
        @GetMapping(path = "/test")
        public String test(@RequestParam("script") String script, @RequestParam("param") String param, @RequestParam("param2") String param2) {
            if (StringUtils.isEmpty(script)) {
                throw new RuntimeException("脚本不能为空");
            }
            log.info("script");
            try {
                ScriptEngineManager factory = new ScriptEngineManager();
                ScriptEngine engine = factory.getEngineByName("groovy");
                Bindings bindings = engine.createBindings();
                bindings.put("message", param);
                bindings.put("miao", param2);
                return engine.eval(script, bindings).toString();
            } catch (Exception e) {
                log.error(e.toString());
                return null;
            }
        }

    3. 使用 Java 执行 groovy 方法

    @ApiOperation(notes = "测试 groovy 函数", value = "测试 groovy 函数")
        @GetMapping(path = "/test2")
        public String test2(@RequestParam("script") String script, @RequestParam("func") String func, @RequestParam("param1") String param1, @RequestParam("param2") String param2) {
            if (StringUtils.isEmpty(script)) {
                throw new RuntimeException("脚本不能为空");
            }
            log.info(script);
            try {
                ScriptEngineManager factory = new ScriptEngineManager();
                ScriptEngine engine = factory.getEngineByName("groovy");
                engine.eval(script);
                Invocable inv = (Invocable) engine;
                return inv.invokeFunction(func, param1, param2).toString();
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }

  • 相关阅读:
    python并发编程的几种方法
    pycharm pytest 运行时报错 gbk
    mac m1 安装python3
    python json.dumps 打印出后为乱码 解决方法
    git ssh密匙配置
    登录接口需html中的token时,需用requests-html库
    代码服务器运行时找不到包文件位置
    mac终端使用iterm及主题 高亮
    Mac 生成项目目录树形结构
    mac 安装xcode命令行工具
  • 原文地址:https://www.cnblogs.com/miaoying/p/11713648.html
Copyright © 2011-2022 走看看