首页 > 解决方案 > 如何在 java 包(Spring Boot)中加载“messages.properties”?

问题描述

我想messages.properties从 java 包中加载多个文件。

我有一个项目设置,例如:

项目结构

并且AppConfig.java是:

@Configuration
public class AppConfig extends AcceptHeaderLocaleResolver implements WebMvcConfigurer {
    ...
    @Bean
    public ResourceBundleMessageSource messageSource() {
        final ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();

        messageSource.setBasenames(
            "file:./project/foo/messages.properties", // Not working
            "file:./project/bar/messages.properties"
        );

        messageSource.setDefaultEncoding("UTF-8");
        
        return messageSource;
    }
}

但上述设置不起作用。如何messages.properties从 java 源包中加载多个?甚至可能吗?

我只是不想使用该文件夹src/main/resources- 我想将文件messages.properties放在每个包文件夹中。

另外,我想重命名文件ProjectFooMessage.properties以匹配文件名(自定义名称)。请赐教!

注意:我使用的是 Spring Boot 2.1.14

标签: javaspringspring-bootspring-internationalization

解决方案


我终于弄明白了。我需要改变pom.xml

// pom.xml
...
<resources>
  <resource>
    <directory>src/main/resources</directory>
  </resource>
  <resource>
    <directory>src/main/java</directory>
      <includes>
        <include>**/*.properties</include>
      </includes>
  </resource>
</resources>
...

关键部分是<include>**/*.properties</include>- 这样我就可以*.properties在 Java 源文件夹中包含所有文件。

然后,我可以使用以下代码访问该文件:

...
messageSource.setBasename("classpath:project/foo/messages");
...

哇哦!


推荐阅读