2009-12-07 88 views
9

想知道什么是将配置键值对添加到您的Grails应用时的'最佳实践'。Grails配置文件:最佳实践

如果您只是添加到Config.groovy或创建新文件。

我试着创建一个新的配置文件(Company.groovy),但无法从我的应用程序访问配置道具。然而,当我将这些属性粘贴到Config.groovy中时,我确实可以访问它们....这可以正常工作,但我不希望Config.groovy变得太大。另一个问题抬起头来。在运行Integration测试时,我发现'test'env无法访问我的新配置属性(值为null)。

我必须做一些根本性的错误。任何意见,将不胜感激。

感谢, d

+3

其实,这是一个很好的问题,没有议论响应和顶部的答案与回答一个问题,我有大约重构一个复杂的Config.groovy文件良好的信息提供给我。随着Grails应用程序逐年增长,这个问题与更多人更相关。 – 2012-05-17 23:04:52

+0

这一个是有帮助的:http://stackoverflow.com/questions/6602620/grails-config-include-another-config-file – osa 2013-10-08 23:53:02

+0

这一个也是有帮助的:http://stackoverflow.com/questions/13648194/grails- external-configuration-can-access-to-external-variable-getting-always – osa 2013-10-08 23:59:40

回答

8

我不知道有具体的最佳实践。我可以告诉你只需添加一些选项的插件通常可以重用Config.groovy,但需要更复杂配置的插件(即Nimble)通常具有可以分开的自己的文件。所以这真的取决于你想添加的特定需求和配置数量。

如果您检查Config.groovy,您会在几行顶端的行中看到(您可以在这里复制),您可以指定Grails在何处查找配置文件。它会自动为您合并属性和.groovy文件。

// locations to search for config files that get merged into the main config 
// config files can either be Java properties files or ConfigSlurper scripts 

// grails.config.locations = [ "classpath:${appName}-config.properties", 
//        "classpath:${appName}-config.groovy", 
//        "file:${userHome}/.grails/${appName}-config.properties", 
//        "file:${userHome}/.grails/${appName}-config.groovy"] 

This section in the docs描述了适合您的选项。

+0

谢谢Jean! 另外我发现一个方便的嘲弄配置服务集成测试(http://mrhaki.blogspot.com/2009/12/grails-goodness-mocking-configuration.html) – Derek 2009-12-08 10:21:12

7

只是为了添加上面的答案,如果您将文件命名为MySampleConfig.groovy(只需使用Config.groovy结束文件名),应该将其添加到grailsApplication上下文中,以便您能够引用以下内容:

sample{ 
     first{ 
      name = "Italy" 
     } 
     second{ 
      name = "Spain" 
     } 
} 

grailsApplication.config.sample["first"].name 
grailsApplication.config.sample["second"].name 

插件我相信行为略有不同,使用ConfigSlurper或类似的需要(我要纠正这一个非常开放的)。

def config = new ConfigSlurper().parse(new File('grails-app/conf/MySampleConfig.groovy').toURL()) 
println config.sample['first'].name 
println config.sample['second'].name 
+0

grailsApplication? ...我遇到问题 – Rafael 2014-09-29 12:00:31

+0

@Rafael - 'grailsApplication'应该可以通过注入使用grails artefact – tylerwal 2016-02-16 21:00:24