¿Cómo llego a las cosas buenas en mi Grails Config.groovy en tiempo de ejecución?
-
10-07-2019 - |
Pregunta
en Config.groovy veo esto:
// set per-environment serverURL stem for creating absolute links
environments {
production {
grails.serverURL = "http://www.changeme.com"
}
}
¿Cuál es la forma correcta de acceder a eso en tiempo de ejecución?
Solución
danb está en el camino correcto. Sin embargo, la vida se vuelve un poco más fácil si haces una importación más agradable:
import org.codehaus.groovy.grails.commons.ConfigurationHolder as CH
println CH.config.grails.serverURL
Otros consejos
En versiones más recientes de grails ConfigurationHolder ha quedado en desuso.
En su lugar, debe usar el objeto grailsApplication.
grailsApplication.config.grails.serverURL
Si está en un controlador o servicio, use la inyección de dependencia del objeto grailsApplication. por ejemplo,
class MyController{
def grailsApplication
def myAction() {
grailsApplication.config.grails.serverURL
}
Consulte ¿Cómo acceder a la configuración de Grails en Grails 2.0?
aquí está:
import org.codehaus.groovy.grails.commons.ConfigurationHolder
println ConfigurationHolder.config.grails.serverURL
alternativamente, en controladores y etiquetas, aparentemente esto funcionará:
grailsApplication.config.grails.serverURL
Lo necesitaba en BootStrap, por lo que la opción 1 era lo que necesitaba.
Como se menciona en algunos de los comentarios, otra opción es grails.utils .Holders
clase que se agregó en Grails 2.0. Prefiero este enfoque ya que puede usarlo en clases que no están configuradas con inyección de dependencia.
import grails.util.Holders
class Foo {
def bar() {
println(Holders.config.grails.serverURL)
}
}