24

我正在使用 ResourceBundle 和 Locale 来查找属性值。很简单,代码如下所示:

  public static String getPropertyValue(Locale locale, String resourceName, String key) {
    ResourceBundle resource = ResourceBundle.getBundle(resourceName, locale);
    return resource.getString(key);
  }

我的问题是关于性能的。缓存方法会比访问类路径上的属性文件更快或更好吗?我的理解是 ResourceBundle 的性能总体上非常好。

属性文件(在这种情况下)少于 30 行(即约 30 个键/值对)。

我质疑性能,因为我们可以在高负载页面上使用类似的方法,而按需查找方法可能证明成本很高。

4

1 回答 1

31

根据Javadocs

默认情况下,工厂方法创建的getBundle资源包实例会被缓存,如果已缓存,工厂方法会多次返回同一个资源包实例。

因此,您不需要自己进行缓存。但是,如果您需要对缓存行为进行更细粒度的控制,则可以使用getBundle(String, ResourceBundle.Control)重载并传递自定义Control的 in。

于 2009-12-01T23:06:18.160 回答