public abstract class AbstractCachingViewResolver extends WebApplicationObjectSupport implements ViewResolver
ViewResolver
実装の便利な基本クラス。一度解決された View
オブジェクトをキャッシュします。これは、初期ビューの取得にどれほどのコストがかかっても、ビューの解決がパフォーマンスの問題にならないことを意味します。 サブクラスは、loadView(java.lang.String, java.util.Locale)
テンプレートメソッドを実装して、特定のビュー名とロケールの View オブジェクトを構築する必要があります。
loadView(java.lang.String, java.util.Locale)
修飾子と型 | フィールドと説明 |
---|---|
static int | DEFAULT_CACHE_LIMIT ビューキャッシュのデフォルトの最大エントリ数: 1024。 |
logger
コンストラクターと説明 |
---|
AbstractCachingViewResolver() |
修飾子と型 | メソッドと説明 |
---|---|
void | clearCache() すべてのキャッシュされたビューオブジェクトを削除して、ビューキャッシュ全体をクリアします。 |
protected View | createView(java.lang.String viewName, java.util.Locale locale) 実際の View オブジェクトを作成します。 |
protected java.lang.Object | getCacheKey(java.lang.String viewName, java.util.Locale locale) 指定されたビュー名と指定されたロケールのキャッシュキーを返します。 |
int | getCacheLimit() ビューキャッシュの最大エントリ数を返します。 |
boolean | isCache() キャッシングが有効な場合に戻ります。 |
boolean | isCacheUnresolved() 未解決のビューのキャッシュが有効かどうかを返します。 |
protected abstract View | loadView(java.lang.String viewName, java.util.Locale locale) サブクラスはこのメソッドを実装して、指定されたビューの View オブジェクトを構築する必要があります。 |
void | removeFromCache(java.lang.String viewName, java.util.Locale locale) 特定のビューのキャッシュをクリアする機能を提供します。 |
View | resolveViewName(java.lang.String viewName, java.util.Locale locale) 指定されたビューを名前で解決します。 |
void | setCache(boolean cache) キャッシュを有効または無効にします。 |
void | setCacheLimit(int cacheLimit) ビューキャッシュのエントリの最大数を指定します。 |
void | setCacheUnresolved(boolean cacheUnresolved) 一度 null に解決されたビュー名がキャッシュされ、その後自動的に null に解決されるかどうか。 |
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
getApplicationContext, getMessageSourceAccessor, initApplicationContext, obtainApplicationContext, requiredContextClass, setApplicationContext
public static final int DEFAULT_CACHE_LIMIT
public void setCacheLimit(int cacheLimit)
public int getCacheLimit()
public void setCache(boolean cache)
これは、"cacheLimit"
プロパティをデフォルトの制限 (1024) または 0 にそれぞれ設定することと同等です。
デフォルトは「true」: キャッシュが有効になっています。これは、デバッグと開発のためにのみ無効にしてください。
public boolean isCache()
public void setCacheUnresolved(boolean cacheUnresolved)
null
に解決されたビュー名がキャッシュされ、その後自動的に null
に解決されるかどうか。 デフォルトは「true」: Spring 3.1 の時点で、未解決のビュー名がキャッシュされています。このフラグは、一般的な "cache"
フラグがデフォルトの "true" に保たれている場合にのみ適用されることに注意してください。
特に興味深いのは、一部の AbstractUrlBasedView 実装(FreeMarker、Tiles)が、AbstractUrlBasedView.checkResource(Locale)
を介して基礎となるリソースが存在するかどうかを確認する機能です。このフラグを "false" に設定すると、再表示される基になるリソースが認識され、使用されます。フラグを "true" に設定すると、1 つのチェックのみが行われます。
public boolean isCacheUnresolved()
@Nullable public View resolveViewName(java.lang.String viewName, java.util.Locale locale) throws java.lang.Exception
ViewResolver
メモ: ViewResolver チェーンを可能にするために、指定された名前のビューが定義されていない場合、ViewResolver は null
を返す必要があります。ただし、これは必須ではありません: 一部の ViewResolvers は、常に指定された名前のビューオブジェクトを構築しようとし、null
を返すことができません(ビューの作成が失敗した場合は例外をスローします)。
ViewResolver
の resolveViewName
viewName
- 解決するビューの名前 locale
- ビューを解決するロケール。国際化をサポートする ViewResolvers はこれを考慮する必要があります。null
(ViewResolver チェーニングを可能にするオプション)java.lang.Exception
- ビューを解決できない場合 (通常、実際の View オブジェクトの作成に問題がある場合)protected java.lang.Object getCacheKey(java.lang.String viewName, java.util.Locale locale)
デフォルトは、ビュー名とロケールサフィックスで構成される文字列です。サブクラスでオーバーライドできます。
別のロケールは別のビューリソースにつながる可能性があるため、一般的にロケールを考慮する必要があります。
public void removeFromCache(java.lang.String viewName, java.util.Locale locale)
これは、開発者が実行時にビュー(FreeMarker テンプレートなど)を変更できる場合に便利です。その後、指定したビューのキャッシュをクリアする必要があります。
viewName
- キャッシュされたビューオブジェクト(存在する場合)を削除する必要があるビューの名前 locale
- ビューオブジェクトを削除する必要があるロケール public void clearCache()
@Nullable protected View createView(java.lang.String viewName, java.util.Locale locale) throws java.lang.Exception
デフォルトの実装は loadView(java.lang.String, java.util.Locale)
に委譲します。これをオーバーライドして、サブクラスによって提供される実際の loadView
実装に委譲する前に、特定のビュー名を特別な方法で解決できます。
viewName
- 取得するビューの名前 locale
- ビューを取得するロケール null
(ViewResolver チェーニングを可能にするオプション)java.lang.Exception
- ビューを解決できなかった場合 loadView(java.lang.String, java.util.Locale)
@Nullable protected abstract View loadView(java.lang.String viewName, java.util.Locale locale) throws java.lang.Exception
サブクラスは国際化をサポートすることを強制されません: 単にロケールパラメーターを無視しないサブクラス。
viewName
- 取得するビューの名前 locale
- ビューを取得するロケール null
(ViewResolver チェーニングを可能にするオプション)java.lang.Exception
- ビューを解決できなかった場合 resolveViewName(java.lang.String, java.util.Locale)