【发布时间】:2018-04-18 00:02:47
【问题描述】:
有一个messageSource Bean:
@Bean
public MessageSource messageSource(){
ReloadableResourceBundleMessageSource messageSource=new ReloadableResourceBundleMessageSource();
messageSource.setDefaultEncoding("UTF-8");
messageSource.setBasenames("classpath:/messages/messages");
return messageSource;
}
我在某处读到如果我使用ReloadableResourceBundleMessageSource messageSource 不应该被缓存并且每次查看属性文件是否有特定的字符串。可悲的是,以这种方式创建的 bean 它不起作用。编译后如果我添加一些属性 Spring Boot 将找不到它。
属性文件位于 /resources/messages/messages.properties 和 /resources/messages/messages_en.properties 中。
【问题讨论】:
-
尝试将
cacheSecondsusingsetCacheSeconds设置为0? -
javadocs 中提到的另一件事:“使用“classpath:”前缀,仍然可以从类路径加载资源,但“-1”以外的“cacheSeconds”值(永久缓存)可能在这种情况下不能可靠地工作。”因此,如果
cacheSeconds不起作用,请尝试将消息文件放在类路径之外并使用setBaseNames中的绝对路径 -
@MohamedSanaulla 添加
setCacheMillis(0)没有帮助。关于路径,如果我的消息在资源文件夹中,这还不够吗?因为它在资源文件夹中,所以我应该放“/messages/messages.properties”,不是吗?你知道如何让它在 intelij 中工作(也许是它的 intelij 错误)? -
你应该能够给出一个绝对路径,比如 /opt/resources/message 试试看。
-
@MohamedSanaulla 很遗憾,以下这些都不起作用:
app/src/main/resources/messages/messages、/src/main/resources/messages/messages、main/resources/messages/messages、resources/messages/messages、messages/messages。
标签: java spring spring-boot properties