AbstractCachingViewResolver类简介说明
下文讲述AbstractCachingViewResolver抽象类的简介说明,如下所示:
此抽象类的用途用于将解析过的视图缓存起来,
下次使用视图时,可直接从缓存中获取,加快数据的获取速度,如果没有则创建一个新的视图对象,并将其放入到map对象中缓存 例:
AbstractCachingViewResolver抽象类
AbstractCachingViewResolver是一个抽象类此抽象类的用途用于将解析过的视图缓存起来,
下次使用视图时,可直接从缓存中获取,加快数据的获取速度,如果没有则创建一个新的视图对象,并将其放入到map对象中缓存 例:
@Override
public View resolveViewName(String viewName, Locale locale) throws Exception {
// 是否启用缓存,可通过setCache()方法或setCacheLimit()方法开启缓存,是一个ConcurrentHashMap,默认缓存大小1024
if (!isCache()) {
return createView(viewName, locale);
} else {
// 得到 view 在缓存中的 key 值
Object cacheKey = getCacheKey(viewName, locale);
View view = this.viewAccessCache.get(cacheKey);
// 如果没有找到 view 则创建,采用双重校验的方式进行安全创建
if (view == null) {
synchronized (this.viewCreationCache) {
view = this.viewCreationCache.get(cacheKey);
if (view == null) {
// 具体的创建方式由子类实现
view = createView(viewName, locale);
if (view == null && this.cacheUnresolved) {
view = UNRESOLVED_VIEW;
}
if (view != null) {
this.viewAccessCache.put(cacheKey, view);
this.viewCreationCache.put(cacheKey, view);
}
}
}
}
return (view != UNRESOLVED_VIEW ? view : null);
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


