¿Cómo acceder a la configuración de Grails en Grails 2.0?




groovy grails-2.0 (4)

Obtuve el último hito de Grails 2.0 y veo una advertencia de desactivación para la clase ConfigurationHolder :

org.codehaus.groovy.grails.commons.ConfigurationHolder

El mensaje de desaprobación simplemente dice "Usar inyección de dependencia", lo cual no es muy útil para mí. Entiendo la inyección de dependencia, pero ¿cómo puedo conectar un bean con la configuración adecuada de Grails para poder acceder a él en tiempo de ejecución? Necesito acceder a la configuración desde otros lugares que no sean mis Controladores y Etiquetas (como BootStrap ).


Otra forma no obsoleta de obtener la configuración es:

    ApplicationContext context = ServletContextHolder.servletContext.
        getAttribute(GrailsApplicationAttributes.APPLICATION_CONTEXT) 
        as ApplicationContext
    ConfigObject config = context.getBean(GrailsApplication).config

Esto funciona en situaciones donde no hay un padre inyectado disponible, como clases de servlet o métodos estáticos.


Para acceder desde la clase de dominio hazlo:

import grails.util.Holders

// more code

static void foo() {
  def configOption = Holders.config.myProperty
}

Una alternativa a grailsApplication es la clase Holders ,

import grails.util.Holders

def config = Holders.config

Usted obtiene la configuración directamente de los titulares, no necesita inyección, lo cual es bueno para las clases de utilidad, etc.


puede inyectar "GrailsApplication" en su archivo fuente. aquí hay una muestra conf / Bootstrap.groovy

class BootStrap {

    def grailsApplication

    def init = { servletContext ->
        println grailsApplication.config
    }

    def destroy = {
    }
}