我有这个多模块项目:
Parent Pom
|
|----Main module (@SpringBootApplcation and application.properties)
|
|----Module I
|
|----Module II
|
|----Module III
主模块依赖于其他模块,包含
messages.properties
和 messages_fr.properties
下 resources/messages/
还有 application.properties
我定义的地方 MessageResource
bean spring.messages.basename=messages/messages
.现在我想把
messages.properties
每个模块中的文件。例如,对于模块 I,在 src/main/resources/messages/messages.properties
下模块 II 也是如此。我的问题是,如何在
MessageResource
中添加模块的消息在 application.properties
中定义的 bean ?我尝试了几个这样的声明:
spring.messages.basename=messages/messages,classpath:/com/company/moduleI/resources/messages/messages
或 spring.messages.basename=messages/messages,classpath:moduleI/resources/messages/messages
但没有一个工作。有没有办法实现这一目标?
最佳答案
我终于找到了一个更好的解决方案,使用 ResourceBundleMessageSource#addBasenames(...)
添加所有模块的消息。
编辑
在每个模块中,我重命名了消息文件,例如对于模块 I,我有 resources/messages/moduleI-messages.properties
, resources/messages/moduleI-messages_en.properties
.
然后我在该模块中定义了一个配置类来添加消息源文件。
@Configuration
public class ModuleConfig {
private final ResourceBundleMessageSource messageSource;
@PostConstruct
public void addMessageBaseName() {
messageSource.addBasenames( "messages/module1-messages" );
}
}
我相信可能有更好的方法,但我没有找到。
关于多模块项目中的Spring Boot i18n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53932444/