【发布时间】:2011-03-02 10:38:12
【问题描述】:
我有一个 webapp,我在 web.xml 中定义了基本的 dispatcher-servlet 上下文,它加载了 applicationContext。
我在dispatcher-servlet 中定义了messageSource,并将其注入到控制器中。
我还在applicationContext 中定义了我的服务,我可以将它们注入我的控制器(在dispatcher-servlet 上下文中定义)。
但是当我将 messageSource 的定义移动到 applicationContext 以便某些服务可以解析消息时,dispatcher-servlet 上下文显示它没有找到 messageSource bean 并且正在使用默认值,因此控制器得到注入了错误的 bean。
知道为什么applicationContext 中的messageSource 定义对dispatcher-servlet 上下文不可见吗?
我看到我的 messageSource bean 已加载到日志的
applicationContext 部分:
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]]
我在dispatcher-servlet的加载中看到了这个日志:
3858 [main] DEBUG org.springframework.web.context.support.XmlWebApplicationContext - Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMessageSource@55611ed3]
【问题讨论】:
标签: java spring-mvc