我设置了一个 GroovyResourceLoader,它似乎会根据需要获取对 groovy 脚本的请求。我只是想知道它是否专门用于除类加载之外的任何地方?与使用 GRL 相比,简单地包装 ClassLoader 并在那里加载 *.groovy 文件有什么好处吗?它们只是达到同一目的的不同方式吗?
问问题
66 次
1 回答
0
GroovyResourceLoader (GRL) 被 GroovyClassLoader (GCL) 使用,并且至少从 Groovy 1.8 开始通过 GroovyScriptEngine (GSE) 间接使用。但是 GSE 也通过 GCL 加载它。
但是 GRL 所做的是“定位”脚本并将 URL 返回到该位置。GCL 所做的是使用 GRL 返回的 URL 来获取源代码并编译它以创建类,然后可以加载该类。
GRL 是 GCL 的后端。因此,它们不是达到同一目的的不同方式。的确,您仍然需要做更多的事情才能实际执行脚本代码(除非它是预编译的),但是“获取脚本源,编译它,从中创建一个类并最终执行它”是您始终必须执行的步骤做。在我们的 GRL/GCL 讨论中,GRL 完成了第一步,GCL 本身完成了第三步。第 2 步由 GCL 中的 CompilationUnit 完成,最后一步由您完成。当然,还有其他方法可以完成这些步骤,但这超出了本次讨论的范围。
于 2012-05-08T11:04:55.067 回答