gpt4 book ai didi

java - NoSuchMessageException - Spring ReloadableResourceBundleMessageSource 与 ResourceBundleMessageSource

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:55:08 36 4
gpt4 key购买 nike

我定义了以下 Spring bean:

<bean id="messageSource" 
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>classpath:messages</value>
</list>
</property>
</bean>

Controller :

@Controller
public class EuserController {

@Inject
MessageSource messageSource;

@RequestMapping(value="/euser/{empId}", method=RequestMethod.DELETE)
public @ResponseBody String deleteEeuserById(@PathVariable(value="empId") Integer id) {
return messageSource.getMessage("deleteEuser.success", null, LocaleContextHolder.getLocale());
}
}

而且效果很好。但是当我试图替换时:

org.springframework.context.support.ReloadableResourceBundleMessageSource

与:

org.springframework.context.support.ResourceBundleMessageSource

我得到一个 org.springframework.context.NoSuchMessageException

当使用 org.springframework.context.support.ResourceBundleMessageSource 时会发生什么?

最佳答案

ReloadableResourceBundleMessageSourceResourceBundleMessageSource 的替代品能够在应用程序运行时刷新消息。它也更强大,因为您不仅限于类路径上的包,还可以从其他位置加载文件。

当使用 ResourceBundleMessageSource 时,您需要在进行更改时重新启动您的应用程序,因为 ResourceBundleMessageSource 不会在您更改它们时重新加载您的包。 classpath: 前缀也需要删除。这是因为这两个类的工作方式:

  • ResourceBundleMessageSource 使用 JDK 类来完成它的工作:ResourceBundle .它委托(delegate)它加载包。基本上,您提供给 ResourceBundleMessageSource 的包必须符合 ResourceBundle 期望和处理的内容。 ResourceBundle 不知道如何处理 classpath: 前缀,因此失败。

  • ReloadableResourceBundleMessageSource 另一方面“更聪明”,知道如何从其他地方加载包,而不仅仅是类路径。它适用于 Spring 类:Resource . There are various implementations out of the box .当你给 ReloadableResourceBundleMessageSource 一个包时,因为它可以从不同的地方加载文件,你必须明确位置并说“我的文件在类路径上”。 You say that by adding the classpath: prefix and Spring knows how to handle it .

关于java - NoSuchMessageException - Spring ReloadableResourceBundleMessageSource 与 ResourceBundleMessageSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27878418/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com