Spring MessaegSource:在依赖项jar中访问消息文件

时间:2019-03-20 15:25:48

标签: java spring-mvc internationalization

我有一个使用 i18n 的Spring MVC应用程序。现在,我想使用依赖项中提供的消息文件。我想使用相同的键/值在我的应用程序中具有一致的输出。但是不知何故,我想念什么?

我的ResourceHandler:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/resources/**")
            .addResourceLocations("/WEB-INF/resources/");
}

我的MessageSource:

@Bean
public MessageSource messageSource() {
    ResourceBundleMessageSource source = new ResourceBundleMessageSource();
    source.setBasenames("messages/user/login/login",
                        "messages/user/user",
                        //external file (NOT WORKING)
                        "classpath:messages/enums/enums");
    source.setDefaultEncoding("UTF-8");
    return source;
}

war根开始的message.file的位置:

WEB-INF/lib/utils-0.1.jar/messages/enums/enums_en.properties

1 个答案:

答案 0 :(得分:0)

我必须更改两件事才能使其正常工作:

  1. 我需要ReloadableResourceBundleMessageSource而不是ResourceBundleMessageSource
  2. 更改源类后,必须将classpath:添加到所有基本名称。本地“资源”文件与依赖项内部的文件之间没有区别。

最终代码如下:

@Bean
public MessageSource messageSource() {
    ResourceBundleMessageSource source = new ResourceBundleMessageSource();
    source.setBasenames("classpath:messages/user/login/login",
                        "classpath:messages/user/user",
                        //external file (in utils-0.1.jar)
                        "classpath:messages/enums/enums");
    source.setDefaultEncoding("UTF-8");
    return source;
}