Как мне получить вкусности в моем Grails Config.groovy во время выполнения? - PullRequest
36 голосов
/ 13 октября 2008

в Config.groovy я вижу это:

// set per-environment serverURL stem for creating absolute links
environments {
    production {
        grails.serverURL = "http://www.changeme.com"
    }
}

как правильно получить к нему доступ во время выполнения?

Ответы [ 4 ]

74 голосов
/ 15 мая 2012

В более поздних версиях Grails ConfigurationHolder устарела.

Вместо этого вы должны использовать объект grailsApplication.

grailsApplication.config.grails.serverURL

Если в контроллере или службе, тогда использовать внедрение зависимостей объекта grailsApplication. например,

class MyController{
    def grailsApplication
    def myAction() {
        grailsApplication.config.grails.serverURL
    }

См. Как получить доступ к конфигурации Grails в Grails 2.0?

31 голосов
/ 13 октября 2008

Данб на правильном пути. Тем не менее, жизнь станет немного проще, если вы сделаете лучший импорт:

import org.codehaus.groovy.grails.commons.ConfigurationHolder as CH
println CH.config.grails.serverURL
14 голосов
/ 13 октября 2008

вот оно:

import org.codehaus.groovy.grails.commons.ConfigurationHolder
println ConfigurationHolder.config.grails.serverURL

в качестве альтернативы в контроллерах и тегах, по-видимому, это будет работать:

grailsApplication.config.grails.serverURL

Мне это было нужно в BootStrap, поэтому мне нужен был вариант 1.

10 голосов
/ 16 июля 2014

Как упоминалось в нескольких комментариях, другой вариант - это класс grails.utils.Holders, который был добавлен в Grails 2.0. Я предпочитаю такой подход, так как вы можете использовать его в классах, которые не настроены с внедрением зависимостей.

import grails.util.Holders

class Foo {
    def bar() {
        println(Holders.config.grails.serverURL)
    }
}
...