使用 grailsApplication.config.myapp.something
访问 Config.groovy 属性时
是否可以以某种方式以编程方式构建属性 key ?例如grailsApplication.config.myapp. + somethingVar.toString()
最佳答案
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
的总体结果是上次迭代返回的值。
关于grails - 是否可以以编程方式构建 grails 配置属性键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20078363/