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

标签 grails groovy

使用 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/

相关文章:

database - Grails 不使用开发数据库

java - Grails 是大型企业 Web 应用程序的可行选择吗?

java - 最快的 Java Web 模板语言

groovy - 构造/销毁自定义Gradle任务

jenkins - 我怎样才能让 Jenkins 上的 groovy 像对待凭据一样屏蔽变量的输出?

validation - 如何停止grails清除自定义验证错误

grails - 在Grails 3.1.7中使用Rest Profile时,如何设置默认的URL映射?

jenkins - 是否可以在管道脚本中将字符串与作业参数连接起来

java - Gradle 文件系统。使用 '/' 或 File.separator?

Groovy - 从程序中获取 JAVA_HOME