【问题标题】:Does spring support invoke dynamic for groovy-backed beans?Spring 支持为 groovy-baked bean 调用动态吗?
【发布时间】:2016-02-15 18:39:27
【问题描述】:
是否可以配置使用 lang 命名空间或手动使用 GroovyScriptFactory 声明的 Groovy bean,使其使用调用动态支持?
<lang:groovy id="messenger" script-source="classpath:Messenger.groovy">
我没有找到任何关于这个案例的可靠文件。
而且,groovy-all:indy maven 工件提供的 GroovyClassLoader 是否使用此功能,还是只能与 groovy 编译器一起使用?
【问题讨论】:
标签:
spring
groovy
invokedynamic
【解决方案1】:
为了激活调用动态支持,您必须:
- 使用 groovy-indy.jar
- 将系统属性
groovy.target.indy 设置为true 或CompilerConfiguration.DEFAULT.getOptimizationOptions().put("indy", true)
这将为所有 groovy 编译器的调用启用此功能(Spring 将使用此选项)。我认为没有办法通过ScriptEngine 配置此选项,仅适用于脚本子集。
如果直接使用 GroovyClassLoader,可以通过CompilerConfiguration.optimizationOptions.indy 属性提供此选项