2011-03-21 32 views
2

我正在將Java Web應用程序轉換爲Grails(1.2.1)。在我的Java應用程序中,我有一個從「.properties」文件加載屬性的單例。我已經看到我可以將該加載放入「Config.groovy」conf文件中。如果我的屬性在Config.groovy中加載,我如何將它們加載到我的Java文件中?下面是配置文件在java中加載時的工作方式...轉換Java - > Grails ...我如何加載這些屬性?

Long interval = ConfigSingleton.getInstance()。getGlobalCacheRefreshInterval();

謝謝 - 戴夫

+0

是否希望將.properties文件內容移動到'Config.groovy',或者在應用程序啓動過程中加載'.properties'文件? – 2011-03-21 13:59:31

回答

3

Grails User Guide改編:後來

globalCacheRefreshInterval = 120 

然後在你的應用程序,您可以訪問這些設置:

您可以添加自己的配置grails-app/conf/Config.groovy,例如以兩種方式之一。最常見的是通過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中正確的類型。在上述情況下,你的配置屬性必須被定義爲長:

globalCacheRefreshInterval = 120L 
+0

嗨,我想將配置添加到Config.groovy文件,以便部分問題得到解答,但是如何從.java文件訪問文件?換句話說,我如何在Java中編寫「def config = org.codehaus.groovy.grails.commons.ConfigurationHolder.config Long interval = config.globalCacheRefreshInterval」? – Dave 2011-03-22 15:30:56

+0

編輯了原始答案以在Java中包含示例。 – deluan 2011-03-22 17:32:12

0

戴夫如果你需要的是加載屬性文件,因爲它是在無需手動進行移動到Config.groovy中,您可以在Config.groovy中文件中的以下內容:

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

這將加載Grails配置類中文件中的所有屬性。需要注意的一點是,如果Config.groovy中的屬性和屬性文件具有相同的名稱,那麼屬性文件中的屬性將覆蓋Config.groovy中的屬性值。您可以從中找到Config.groovy中的屬性值。有關Grails外部配置的更多信息here

相關問題