配置变量未按预期从 application.yml 获取



我有配置变量(在application.yml中(作为:

xyz:
exception.emails: ['abc@gmail.com']

虽然在本地获取它工作正常,但在部署战争后,我得到的配置变量为:

xyz: [
    exception: [
        emails[
            0
        ]: abc@gmail.com
    ]
]

我把它拉为:

def email = Holders.config.grails.xyz.exception.emails

我实际上对这项工作感到惊讶,因为我认为查看默认应用程序.yml 时这不是正确的 yml 语法,他们指定了一个用户代理列表,如下所示:

grails:
    mime:
        disable:
            accept:
                header:
                    userAgents:
                        - Gecko
                        - WebKit
                        - Presto
                        - Trident

就我个人而言,我喜欢使用application.groovy并使用像这样的时髦语法:

grails {
    mime {
        disable {
            accept {
                header {
                    userAgents:
                    ['Gecko', 'WebKit', 'Presto', 'Trident']
                }
            }
        }

它可能有点过时了,但这里有一个将application.yml转换为application.groovy的示例:https://github.com/virtualdogbert/Grails3Tutorial/blob/step_01_settings_yml_to_groovy/grails-app/conf/application.groovy

另请注意,过去您可以从 application.groovy 运行代码,但是如果您有任何导入,它们将不起作用,因为 application.yml/groovy 适用于 cli(pre runtime(,因此作为解决方法,您还可以指定 runtime.groovy,您可以在其中进行导入。如果你加倍努力并编写一个插件,你可以指定一个plugin.groovy,来设置默认值。

最新更新