Java ResourceBundle Performance

2022-09-01 20:54:43

我正在使用资源捆绑和区域设置来查找属性值。很简单,代码看起来像这样:

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

我的问题是关于性能的。与访问类路径上的属性文件相比,缓存方法的实现是更快还是更好?我的理解是,ResourceBundle的性能总体上非常好。

属性文件(在本例中)少于 30 行(即 ~30 个键/值对)。

我对性能提出质疑,因为我们可以在高负载页面上使用类似的方法,而按需查找方法可能会很昂贵。


答案 1

根据Javadocs的说法

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

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


答案 2

推荐