在哪里可以在grails 4.0.1

时间:2020-01-13 20:26:30

标签: grails

在grails 2.0中,我可以在Config.groovy中定义列表,并通过grails.util.Holders.config访问它们。

grails 4.0.1中对应的功能是什么?

4 个答案:

答案 0 :(得分:0)

签出配置类:https://docs.grails.org/4.0.1/api/grails/config/Config.html

根据官方文档:https://docs.grails.org/latest/guide/conf.html#environments

Grails支持每个环境配置的概念。的 application.yml中的application.groovygrails-app/conf文件 目录可以通过YAML或每个环境使用每个环境的配置 ConfigSlurper提供的语法。

答案 1 :(得分:0)

在grails 2.0中,我可以在Config.groovy中定义列表并访问它们 通过grails.util.Holders.config。

最佳答案取决于了解要从何处访问值的一些上下文,但是通常不应使用Holders.config(在Grails 2、3和4中是正确的)。一种选择是让DI容器为您注入List值。

查看位于https://github.com/jeffbrown/user3647093configlist的项目。

https://github.com/jeffbrown/user3647093configlist/blob/7078c5edc896afd6afb0280f126794730485c564/grails-app/conf/application.yml#L1-L7

---
music:
    drummers:
        - Neil Peart
        - Mike Portnoy
        - Bill Bruford
        - Carl Palmer

https://github.com/jeffbrown/user3647093configlist/blob/7078c5edc896afd6afb0280f126794730485c564/grails-app/init/user3647093configlist/BootStrap.groovy

package user3647093configlist

import org.springframework.beans.factory.annotation.Value

class BootStrap {

    @Value('${music.drummers}')
    List<String> drummerNames

    def init = { servletContext ->
        println 'Drummers:'
        for(String name : drummerNames) {
            println "\t$name"
        }
    }

    def destroy = {
    }
}

在应用程序启动时输出以下内容:

Drummers:
        Neil Peart
        Mike Portnoy
        Bill Bruford
        Carl Palmer

我希望能帮上忙。

答案 2 :(得分:-1)

在.yml末尾简单添加两行

registrierungsstati: [beantragt, in Prüfung, anerkannt] 
qualitätsnachweise:[Techniker,Bachelor,Master,Diplom,Promotion] 

并在我的域Class中将它们作为列表检索

List getQualitätsnachweise () { 
    GrailsApplication grailsApplication
    grailsApplication.config.getProperty('qualitätsnachweise')
}

List getRegistrierungsstati () {
    GrailsApplication grailsApplication
    grailsApplication.config.getProperty('registrierungsstati')
}

另请参见 https://objectcomputing.com/news/2016/08/31/retrieving-config-values-grails-3

答案 3 :(得分:-1)

更正:

List getQualitätsnachweise () { 
GrailsApplication grailsApplication = Holders.grailsApplication
grailsApplication.config.getProperty('qualitätsnachweise')

}

List getRegistrierungsstati () {
GrailsApplication grailsApplication = Holders.grailsApplication
grailsApplication.config.getProperty('registrierungsstati')

}

在两种情况下,必须使用Holders.grailsApplication初始化

grailsApplication,同样的错误也出现在 https://objectcomputing.com/news/2016/08/31/retrieving-config-values-grails-3

顺便说一句,在域类中使用getter生成List并不是一个好主意,因为hibernate遇到了麻烦,因为hibernate将getter用作数据库字段。因此,我使用了

static List qualitaetsnachweise ()

代替

静态列表getQualitaetsnachweise()

请注意: grailsApplication.config.getProperty('qualitaetsnachweise') 不以列表形式出现,您将以逗号分隔的字符串的形式获取它,您必须通过

进行转换

... .split(',')。toList()

相关问题