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

Javadocによると:

ファクトリメソッドによって作成されたリソースバンドルインスタンスはgetBundleデフォルトでキャッシュされ、ファクトリメソッドは、キャッシュされている場合、同じリソースバンドルインスタンスを複数回返します。

したがって、自分でキャッシュを実行する必要はありません。ただし、キャッシュ動作をよりきめ細かく制御する必要がある場合は、getBundle(String, ResourceBundle.Control)オーバーロードを使用して、カスタマイズされたを渡すことができますControl

于 2009-12-01T23:06:18.160 に答える