• 使用 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 Study Notes]进程信息(丁丁软件监控进程,http-post)
    [Python Study Notes]cpu信息
    [Python Study Notes]电池信息
    [Python Study Notes]内存信息
    [Python Study Notes]磁盘信息和IO性能
    [Python Study Notes]计算cpu使用率v0.1
    [Python Study Notes]计算cpu使用率
    [Python Study Notes]psutil模块
    [解决问题] E: 无法获得锁 /var/lib/dpkg/lock
    [Python Study Notes] python面试题总结
  • 原文地址:https://www.cnblogs.com/miaoying/p/11713648.html
Copyright © 2020-2023  润新知