我已经设置了一个GroovyResourceLoader,它似乎可以根据需要获得groovy脚本的请求。我只是想知道除了课程加载以外它是否特别使用过?简单地包装ClassLoader并在那里加载* .groovy文件而不是使用GRL有什么好处吗?它们是不同的方式来达到同一目的吗?
答案 0 :(得分: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完成,最后一步是你的完成。当然,还有其他方法可以完成这些步骤,但这超出了本次讨论的范围。