Tengo una aplicación web en la que defino el contexto básico dispatcher-servlet
en web.xml y carga el applicationContext
.Mover messageSource a applicationContext hace que el mensaje predeterminado Source no sea visible en el contexto servlet-dispatcher
Tenía messageSource
definido en dispatcher-servlet
y lo estaba inyectando a los controladores muy bien.
También tengo mis servicios definidos en applicationContext
y los puedo inyectar en mis controladores (definidos en el contexto dispatcher-servlet
).
Pero cuando moví la definición para messageSource
a la applicationContext
por lo que algunos servicios podrían resolver mensajes dispatcher-servlet
el contexto muestra que no es la búsqueda de un grano de messageSource
y se utiliza el valor por defecto, por lo que los controladores de obtener el grano mal inyectado.
¿Alguna idea de por qué la definición messageSource en applicationContext
no sería visible para el contexto dispatcher-servlet
?
veo que mi grano de MessageSource se carga en la sección
applicationContext
de los registros:
2058 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'messageSource'
2058 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating instance of bean 'messageSource'
...
2082 [main] DEBUG org.springframework.web.context.support.XmlWebApplicationContext - Using MessageSource [mycommons.spring.ResourceBundleMessageSourceWithDefaultResolution: basenames=[messages]]
que ver este registro en la carga de dispatcher-servlet
:
3858 [main] DEBUG org.springframework.web.context.support.XmlWebApplicationContext - Unable to locate MessageSource with name 'messageSource': using default [[email protected]1ed3]
Aha, esa magia de primavera me atrapa a veces. :) ¡Gracias! ¿Conoces la mejor solución? ¿O solo necesito separar los mensajes que usarán los controladores de aquellos que pueden ser utilizados por los servicios? –
@David: puede separarlos, o poner la definición de bean 'messageSource' en un archivo XML separado, e incluirlo (usando' ') donde sea necesario. –
skaffman
Supongo que al agregar tanto para dispatcher-servlet como para applicationContext creará dos copias del messageSource bean. –