クラス AbstractCachingViewResolver

実装されたすべてのインターフェース:
AwareApplicationContextAwareServletContextAwareViewResolver
既知の直属サブクラス
ResourceBundleViewResolverUrlBasedViewResolverXmlViewResolver

public abstract class AbstractCachingViewResolver extends WebApplicationObjectSupport implements ViewResolver
ViewResolver 実装の便利な基本クラス。一度解決された View オブジェクトをキャッシュします。これは、初期ビューの取得にどれほどのコストがかかっても、ビューの解決がパフォーマンスの問題にならないことを意味します。

サブクラスは、loadView(java.lang.String, java.util.Locale) テンプレートメソッドを実装して、特定のビュー名とロケールの View オブジェクトを構築する必要があります。

作成者:
Rod Johnson, Juergen Hoeller
関連事項:
  • フィールドの詳細

    • DEFAULT_CACHE_LIMIT

      public static final int DEFAULT_CACHE_LIMIT
      ビューキャッシュのデフォルトの最大エントリ数: 1024。
      関連事項:
  • コンストラクターの詳細

    • AbstractCachingViewResolver

      public AbstractCachingViewResolver()
  • メソッドの詳細

    • setCacheLimit

      public void setCacheLimit(int cacheLimit)
      ビューキャッシュのエントリの最大数を指定します。デフォルトは 1024 です。
    • getCacheLimit

      public int getCacheLimit()
      ビューキャッシュの最大エントリ数を返します。
    • setCache

      public void setCache(boolean cache)
      キャッシュを有効または無効にします。

      これは、"cacheLimit" プロパティをデフォルトの制限 (1024) または 0 にそれぞれ設定することと同等です。

      デフォルトは「true」: キャッシュが有効になっています。これは、デバッグと開発のためにのみ無効にしてください。

    • isCache

      public boolean isCache()
      キャッシングが有効な場合に戻ります。
    • setCacheUnresolved

      public void setCacheUnresolved(boolean cacheUnresolved)
      一度 null に解決されたビュー名がキャッシュされ、その後自動的に null に解決されるかどうか。

      デフォルトは「true」: 未解決のビュー名はキャッシュされます。このフラグは、一般的な "cache" フラグがデフォルトの "true" のままである場合にのみ適用されることに注意してください。

      特に興味深いのは、一部の AbstractUrlBasedView 実装 (FreeMarker など) が AbstractUrlBasedView.checkResource(Locale) を介して基になるリソースが存在するかどうかを確認する機能です。このフラグを "false" に設定すると、再表示される基になるリソースが通知され、使用されます。フラグを "true" に設定すると、1 つのチェックだけが行われます。

    • isCacheUnresolved

      public boolean isCacheUnresolved()
      未解決のビューのキャッシュが有効かどうかを返します。
    • setCacheFilter

      public void setCacheFilter(AbstractCachingViewResolver.CacheFilter cacheFilter)
      ビューをキャッシュするかどうかを決定するフィルターを設定します。

      デフォルトの動作は、すべてのビューをキャッシュすることです。

      導入:
      5.2
    • getCacheFilter

      public AbstractCachingViewResolver.CacheFilter getCacheFilter()
      ビューをキャッシュするかどうかを決定するフィルター関数を返します。
      導入:
      5.2
    • resolveViewName

      @Nullable public View resolveViewName(StringSE viewName, LocaleSE locale) throws ExceptionSE
      インターフェースからコピーされた説明: ViewResolver
      指定されたビューを名前で解決します。

      メモ: ViewResolver チェーンを可能にするために、指定された名前のビューが定義されていない場合、ViewResolver は null を返す必要があります。ただし、これは必須ではありません: 一部の ViewResolvers は、常に指定された名前のビューオブジェクトを構築しようとし、null を返すことができません(ビューの作成が失敗した場合は例外をスローします)。

      次で指定:
      インターフェース ViewResolverresolveViewName 
      パラメーター:
      viewName - 解決するビューの名前
      locale - ビューを解決するロケール。国際化をサポートする ViewResolvers はこれを考慮する必要があります。
      戻り値:
      View オブジェクト。見つからない場合は null (ViewResolver チェーニングを可能にするオプション)
      例外:
      ExceptionSE - ビューを解決できない場合 (通常、実際の View オブジェクトの作成に問題がある場合)
    • getCacheKey

      protected ObjectSE getCacheKey(StringSE viewName, LocaleSE locale)
      指定されたビュー名と指定されたロケールのキャッシュキーを返します。

      デフォルトは、ビュー名とロケールサフィックスで構成される文字列です。サブクラスでオーバーライドできます。

      別のロケールは別のビューリソースにつながる可能性があるため、一般的にロケールを考慮する必要があります。

    • removeFromCache

      public void removeFromCache(StringSE viewName, LocaleSE locale)
      特定のビューのキャッシュをクリアする機能を提供します。

      これは、開発者が実行時にビュー (FreeMarker テンプレートなど) を変更できる場合に便利です。その後、指定したビューのキャッシュをクリアする必要があります。

      パラメーター:
      viewName - キャッシュされたビューオブジェクト(存在する場合)を削除する必要があるビューの名前
      locale - ビューオブジェクトを削除する必要があるロケール
    • clearCache

      public void clearCache()
      すべてのキャッシュされたビューオブジェクトを削除して、ビューキャッシュ全体をクリアします。その後の resolve 呼び出しは、要求されたビューオブジェクトの再作成につながります。
    • createView

      @Nullable protected View createView(StringSE viewName, LocaleSE locale) throws ExceptionSE
      実際の View オブジェクトを作成します。

      デフォルトの実装は loadView(java.lang.String, java.util.Locale) に委譲します。これをオーバーライドして、サブクラスによって提供される実際の loadView 実装に委譲する前に、特定のビュー名を特別な方法で解決できます。

      パラメーター:
      viewName - 取得するビューの名前
      locale - ビューを取得するロケール
      戻り値:
      View インスタンス。見つからない場合は null (ViewResolver チェーニングを可能にするオプション)
      例外:
      ExceptionSE - ビューを解決できなかった場合
      関連事項:
    • loadView

      @Nullable protected abstract View loadView(StringSE viewName, LocaleSE locale) throws ExceptionSE
      サブクラスはこのメソッドを実装して、指定されたビューの View オブジェクトを構築する必要があります。返された View オブジェクトは、この ViewResolver 基本クラスによってキャッシュされます。

      サブクラスは国際化をサポートすることを強制されません: 単にロケールパラメーターを無視しないサブクラス。

      パラメーター:
      viewName - 取得するビューの名前
      locale - ビューを取得するロケール
      戻り値:
      View インスタンス。見つからない場合は null (ViewResolver チェーニングを可能にするオプション)
      例外:
      ExceptionSE - ビューを解決できなかった場合
      関連事項: