写信给config.groovy

时间:2011-09-13 10:29:10

标签: grails

我知道可以从grails-app/conf/Config.groovy读取值,但我想知道是否也可以写入值?

这个简单的东西似乎并没有真正改变Config中的值。

def oldValue = grailsApplication.config.my.value 
assert oldValue == "oldValue"

def newValue = "newValue"
grailsApplication.config.my.value = newValue 
assert newValue == grailsApplication.config.my.value

我想将此作为一种方法在数据库之外存储一些值,而不必加载另一个属性文件。

2 个答案:

答案 0 :(得分:2)

如果我理解正确的话,这可能不会很实际。您真的在运行时处理已编译的Config.class。你真的想从你的VCS中查看Config.groovy,修改它,重新编译它,重新编译它,然后搞乱Classloader来重新加载它吗?我发现这样做的唯一方法是将其属性外部化为数据库或文件,并在运行时管理状态以处理更新。

答案 1 :(得分:0)

我同意proflux的评论。 Config.groovy不是保留您的应用程序生成的任何数据的正确位置,并且您尝试的内容不起作用是好事:)

我很好奇为什么你不想将这些值保存在常规数据库中(无论何种类型)。当然,总是可以选择将其存储在某个文件中,您可以在Config.groovy中配置该路径。但即使对我来说,这似乎也只是有点帮助。

为什么不按照以下方式添加域类:

class Setting{
  String key
  String value
  static constraints = {
    key(unique: true)
  }
}

从我在这里可以看出,这可能是实现您所寻找目标的最简单方法。但同样,你应该详细说明你需要坚持的数据类型......