使用grailsApplication.config.myapp.something
是否有可能以某种方式以编程方式构建属性键?例如grailsApplication.config.myapp. + somethingVar.toString()
答案 0 :(得分:8)
Groovy允许您使用GString表达式进行属性访问,所以
grailsApplication.config.myapp."${somethingVar}"
只要somethingVar
不包含任何点,就会执行您想要的操作。如果你有一个包含整个配置键的变量,包括点,那么你可以使用flatConfig
:
def key = "myapp.something"
def value = grailsApplication.flatConfig."${key}"
或者变量是“路径”的一部分而不是整体:
def key = "some.thing"
def value = grailsApplication.flatConfig."myapp.${key}" // gives myapp.some.thing
或者您可以通过使用inject
flatConfig
def key = "some.thing"
def value = key.split(/\./).inject(grailsApplication.config.myapp) { co, part ->
co."${part}"
}
inject
方法为我们迭代的数组中的每个项调用一次闭包,每次传递最后一次迭代返回的值(我称之为co
,因为它将是ConfigObject
)和此迭代的值(part
)。 inject
的总结果是上次迭代返回的值。