对于Bean来说,通常我们可以自定义id属性,但对于 ResourceBundleMessageSource 类,如果我们不指定id=“消息来源”然后抛出异常。
<bean id="myMessageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="message" />
</bean>
它抛出异常
Exception in thread "main" org.springframework.context.NoSuchMessageException:
for code
new ClassPathXmlApplicationContext("springconfig.xml").getMessage("code");
简短的回答 - 因为这就是他们设计的方式。
如中所述参考指南 http://docs.spring.io/spring/docs/4.0.5.RELEASE/spring-framework-reference/htmlsingle/#context-functionality-messagesource:
When an ApplicationContext
加载完毕后,会自动搜索MessageSource
上下文中定义的bean。Bean 必须有名称messageSource
.如果找到这样的 bean,则对前述方法的所有调用都会委托给消息源......如果ApplicationContext
找不到任何消息源,空的DelegatingMessageSource
被实例化以便能够接受对上面定义的方法的调用。
这只是搜索的硬编码值。如果你不提供具有该名称的 bean,你最终会得到一个DelegatingMessageSource http://docs.spring.io/spring/docs/4.0.5.RELEASE/javadoc-api/org/springframework/context/support/DelegatingMessageSource.html无法解决您的任何消息的实例,给您一个NoSuchMessageException
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)