是否可以通过编程方式构建grails配置属性键?

时间:2013-11-19 17:44:36

标签: grails groovy

使用grailsApplication.config.myapp.something

访问Config.groovy属性时

是否有可能以某种方式以编程方式构建属性键?例如grailsApplication.config.myapp. + somethingVar.toString()

1 个答案:

答案 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的总结果是上次迭代返回的值。