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

  • 相关阅读:
    JS之四舍五入有小数点
    c# table 怎么在前台循环展示 ViewBag
    c# ajax从后台获取数据list数组 $.each再显示数据
    c# 快捷键
    c#_导出table功能
    c# 缓存详解
    c# url链接转成二维码图片,再转成byte[]二进制流,输出到前段ajax
    JS ajax 返回的json对象 新增属性值(干货)
    tomcat配置HTTPS
    zookeeper集群安装
  • 原文地址:https://www.cnblogs.com/miaoying/p/11713648.html
Copyright © 2011-2022 走看看