Spring:如何在ReloadableResourceBundleMessageSource下热重新加载资源

时间:2017-07-19 14:26:27

标签: spring spring-boot

我在spring framework reference

中找到了ReloadableResourceBundleMessageSource
  

作为ResourceBundleMessageSource的替代品,Spring提供了一个   ReloadableResourceBundleMessageSource类。此变体支持   相同的捆绑文件格式,但比标准JDK更灵活   基于ResourceBundleMessageSource实现。特别是它   允许从任何Spring资源位置读取文件(不仅仅是   来自classpath)并支持bundle属性的热重载   文件(同时有效地缓存它们之间)。看看   ReloadableResourceBundleMessageSource javadocs以获取详细信息。

如果我理解正确,您可以更改属性文件中的代码,服务器将在运行时立即加载它们。

如何在基于Spring boot的Web应用程序中实现热重新加载?

热重载的触发器是什么?

1 个答案:

答案 0 :(得分:0)

您可以像这样创建一个ReloadableResourceBundleMessageSource的bean

@Bean
public ReloadableResourceBundleMessageSource messageSource() {
    ReloadableResourceBundleMessageSource source = new ReloadableResourceBundleMessageSource();
    source.setBasename("classpath:test");  // name of the resource bundle
    source.setDefaultEncoding("UTF-8");
    source.setCacheSeconds(10);
    return source;
}

要使用它,您只需在课程中自动装配MessageSource并从该包中获取消息。

@Autowired
MessageSource messageSource;

public void getMessage() {
   Locale locale = LocaleContextHolder.getLocale();
   String message = messageSource.getMessage("some.message", null, locale);
}

MessageSourcePropertySource不同。 现在,如果您正在讨论重新加载用于配置spring的属性(例如在application.properties中),那么查看here