转换Java - > Grails ...如何加载这些属性?

时间:2011-03-21 13:56:11

标签: grails

我正在将Java Web应用程序转换为Grails(1.2.1)。在我的Java应用程序中,我有一个单例从“.properties”文件加载属性。我已经看到我可以将该加载到“Config.groovy”配置文件中。如果我的属性在Config.groovy中加载,如何在Java文件中加载它们?当我在Java中加载Config时,我就是这样做的。

长间隔= ConfigSingleton.getInstance()。getGlobalCacheRefreshInterval();

谢谢, - 戴夫

3 个答案:

答案 0 :(得分:3)

改编自Grails User Guide

您可以在grails-app/conf/Config.groovy中添加自己的配置,例如:

globalCacheRefreshInterval = 120

然后,在您的应用程序中,您可以通过以下两种方式之一访问这些设置。最常见的是通过GrailsApplication对象,该对象可用作控制器和标记库中的变量:

Long interval = grailsApplication.config.globalCacheRefreshInterval

另一种方法是获取对包含对配置对象的引用的ConfigurationHolder类的引用:

def config = org.codehaus.groovy.grails.commons.ConfigurationHolder.config
Long interval = config.globalCacheRefreshInterval

如果您想从 Java 类访问此配置,可以使用:

import org.codehaus.groovy.grails.commons.ConfigurationHolder;
...
Map config = ConfigurationHolder.getFlatConfig();
Long interval = (Long) config.get("globalCacheRefreshInterval");

注意Config.groovy中的正确类型。在上面的例子中,您的配置属性必须定义为Long:

globalCacheRefreshInterval = 120L

答案 1 :(得分:0)

您还应该检查ConfigSlurper class(这是Grails用来加载其配置文件的内容)。

答案 2 :(得分:0)

Dave如果您需要的是加载属性文件,而不必手动将它们移动到Config.groovy,您可以在Config.groovy文件中进行以下操作:

 grails.config.locations = [
          "file:" + "/pathWhereFileLives/fileName.properties"
  ]

这将加载Grails配置类中文件中的所有属性。需要注意的是,如果Config.groovy中有一个属性,并且属性文件具有相同的名称,则属性文件中的属性将覆盖Config.groovy中的属性值

您可以找到有关Grails外部配置here的更多信息。