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

  • 相关阅读:
    PHP之旅3 php数组以及遍历数组 以及each() list() foreach()
    NSSetUncaughtExceptionHandler
    runtime
    Objective-C中的instancetype和id区别
    tableView 局部刷新
    CGAffineTransform
    iOS中文本属性Attributes
    ios 相机 自定义 相片的截取
    php程序的生命周期
    PHP代码执行流程
  • 原文地址:https://www.cnblogs.com/miaoying/p/11713648.html
Copyright © 2011-2022 走看看