Der*_*rek 9 grails configuration-files
只是想知道在为grails应用程序添加配置键值对时的"最佳实践"是什么.
您是否应该添加到Config.groovy或创建新文件.
我尝试创建一个新的配置文件(Company.groovy),但无法从我的应用程序访问配置道具.然而,当我将属性粘贴到Config.groovy时,我确实可以访问它们....这样可以正常工作,但我不希望Config.groovy变得太大.另一个问题抬头了.在运行Integration测试时,我发现'test'env无法访问我的新配置属性(值为null).
我必须做一些根本错误的事情.任何意见,将不胜感激.
感谢:D
我不确定是否有具体的最佳实践.我可以告诉你插件只是添加一些选项通常重用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"]
Run Code Online (Sandbox Code Playgroud)
只需添加上面的答案,如果您将文件命名为MySampleConfig.groovy(只需使用Config.groovy结束文件名),则应将其添加到grailsApplication上下文中,以便您能够引用以下内容:
sample{
first{
name = "Italy"
}
second{
name = "Spain"
}
}
Run Code Online (Sandbox Code Playgroud)
如
grailsApplication.config.sample["first"].name
grailsApplication.config.sample["second"].name
Run Code Online (Sandbox Code Playgroud)
插件我认为行为略有不同,并且需要使用ConfigSlurper或类似物(我非常愿意对此进行校正).
def config = new ConfigSlurper().parse(new File('grails-app/conf/MySampleConfig.groovy').toURL())
println config.sample['first'].name
println config.sample['second'].name
Run Code Online (Sandbox Code Playgroud)