我正在将Java Web应用程序转换为Grails(1.2.1)。在我的Java应用程序中,我有一个单例从“.properties”文件加载属性。我已经看到我可以将该加载到“Config.groovy”配置文件中。如果我的属性在Config.groovy中加载,如何在Java文件中加载它们?当我在Java中加载Config时,我就是这样做的。
长间隔= ConfigSingleton.getInstance()。getGlobalCacheRefreshInterval();
谢谢, - 戴夫
答案 0 :(得分:3)
您可以在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的更多信息。