它可以实现基于闭包的配置作为地图的地图?
grails {
acme {
host = 'localhost'
poolSettings {
timeout = 5000
}
}
}
以上配置是一个Grails插件的约定。 我们做了迁移,并且由于传统的限制,我们需要动态创建的配置,以消除影响,遗留代码。
我开始用一个简单的配置:
grails.acme = [host:'localhost']
这工作正常启动时的插件,所以我增加了一个嵌套的地图:
grails.acme = [host:'localhost']
def poolProps = //do some work to get pool settings
grails.acme << [poolSettings:poolProps]
在启动时,我很打印grails.acme
:
{
"host": "locahost",
"poolSettings": {
"timeout": 5000
}
}
它看起来正常,但失败并出现以下错误极致插件后不久:
2014-09-27 23:27:07460 [本地主机 - startStop-1] ERROR context.GrailsContextLoader - 错误初始化应用程序:方法的无签名:AcmePlugin $ _closure2_closure5_closure9 .doCall()是适用于参数类型:(grails.spring。 BeanBuilder)的值:[grails.spring.BeanBuilder@7b067fd7]可能的解决方案:doCall(java.lang.Object中,java.lang.Object中),()调用,调用([Ljava.lang.Object),调用(Java的。 lang.Object),电话(java.lang.Object中,java.lang.Object中)的findAll()消息:法无签名:AcmeGrailsPlugin $ _closure2_closure5_closure9.doCall()是适用于参数类型:(grails.spring.BeanBuilder)值:[grails.spring.BeanBuilder@7b067 FD7]可能的解决方案:doCall(java.lang.Object中,java.lang.Object中),()调用,调用([Ljava.lang.Object),呼叫(java.lang中.Object),电话(java.lang.Object中,java.lang.Object中)
我对这种难倒,我猜想这是不可能的,我不知道如何甚至是动态接近封基约定。