繁体   English   中英

在运行时在java中执行Groovy代码

[英]Execution of Groovy code in java at runtime

是否可以执行在java应用程序中动态加载的groovy代码。 例如,有一个数据库表,其中包含一小段groovy代码,如:

def test(${val_to_insert_from_java}){
    if (${val_to_insert_from_java} > 10){
        return true;
    }
    return false;
}

其中${val_to_insert_from_java}是一个占位符,用于在执行java代码期间插入的某些实际值,例如:

String groovyFuncSource = getFromDb();
groovyFuncSource.replace(${val_to_insert_from_java}, 9);
Object result = <evaluate somehow groovyFuncSource>;

有没有办法评估这样的Groovy代码? 或者你可能会告诉我一些其他方法如何实现这一点。

是的,你可以这样做。

请参阅http://groovy.codehaus.org/Embedding+Groovy链接

您可能需要谨慎使用此方法,因为执行存储在数据库中的代码会在应用程序中引入安全漏洞。 例如,一些恶意插入数据库中的文本代码几乎可以做任何事情,除非你检查它。

另一种方法是使用JavaScript而不是Groovy。 为什么? 因为Rhino JavaScript引擎已经附带了JDK 因此,如果您尚未在项目中使用Groovy,那么它的依赖性会降低一个。

从Java 6开始,您可以使用Java Scripting API来完成此任务。 Java脚本API允许您在Java应用程序中使用各种脚本语言。

您可以在此处找到有关Java Scripting的更多信息。

是的,您可以使用Groovy脚本引擎在执行时评估Groovy源代码 - 当然,源代码可以是字符串替换的结果。

从我记忆中,你可以通过各种方式实现这一目标,这将有不同的优点和缺点。

<plug>有关更多详细信息,请参阅Groovy in Action的第11章。 </插头>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM