gpt4 book ai didi

java - ReloadableResourceBundleMessageSource 与 ResourceBundleMessageSource - 缓存概念和其他差异

转载 作者:行者123 更新时间:2023-11-30 08:32:59 31 4
gpt4 key购买 nike

我正在学习 Spring 。我尝试使用 ResourceBundleMessageSource,这是我尝试过的示例。

主应用

public class MainApp {

public static void main(String arg[]){
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");



String text = context.getMessage("s.wish",
new Object[] {"saro", "stanes" },
Locale.ENGLISH);

System.out.println("English... " + text);

String text2 = context.getMessage("s.wish",
new Object[] {"saro", "stanes" },
Locale.FRANCE);

System.out.println("French... " + text2);
}
}

Beans.xml

<!-- resource bundle -->
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource ">
<property name="basename" value="resources/locale/messages"/>

</bean>

messages_en_US.properties

s.wish=good morning, name : {0}, school : {1}

messages_fr_FR.properties

s.wish=bonjour, name : {0}, school : {1}

输出:

English... good morning, name : saro, school : stanes
French... bonjour, name : saro, school : stanes

从文档中我了解到 ReloadableResourceBundleMessageSource 比 ResourceBundleMessageSource 先进得多。

1) 不限于单独读取.properties文件,还可以读取xml属性文件。

2) 不限于只从类路径读取文件,而是从任何位置读取文件。

围绕“cacheSeconds”的概念是什么

class="org.springframework.context.support.ReloadableResourceBundleMessageSource ">
<property name="basename" value="resources/locale/messages"/>
<property name="cacheSeconds" value="3600"/>
</bean>

任何人都可以简要介绍一下或帮助我举个例子来更好地理解。

最佳答案

设置缓存加载属性文件的秒数。

  • 默认为“-1”,表示永远缓存(就像java.util.ResourceBundle)。
  • 正数将在给定的秒数内缓存加载的属性文件。这实质上是刷新检查之间的间隔。请注意,刷新尝试将在实际重新加载文件之前首先检查文件的最后修改时间戳;因此,如果文件没有更改,则可以将此间隔设置得相当低,因为刷新尝试实际上不会重新加载。
  • 值“0”将在每次消息访问时检查文件的最后修改时间戳。不要在生产环境中使用它!

请注意,根据您的类加载器,到期可能无法可靠地工作,因为类加载器可能会保留捆绑文件的缓存版本。

在这种情况下,结合非类路径位置,更喜欢 ReloadableResourceBundleMessageSource 而不是 ResourceBundleMessageSource。

关于java - ReloadableResourceBundleMessageSource 与 ResourceBundleMessageSource - 缓存概念和其他差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39685399/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com