22_4 Spring MVC - ViewResolver系列 - BeanNameViewResolver
22_4 Spring MVC - ViewResolver系列 - BeanNameViewResolver
一、简介
BeanNameViewResolver视图解析器跟XmlViewResolver类似,也是根据Controller返回的视图名去匹配定义好的视图Bean对象。不同点是BeanNameViewResolver将视图Bean对象的定义配置在springmvc.xml文件中。
二、源码解析
BeanNameViewResolver重写了抽象方法 resolveViewName来实现View对象的创建。
	@Override
	@Nullable
	public View resolveViewName(String viewName, Locale locale) throws BeansException {
		ApplicationContext context = obtainApplicationContext();
		if (!context.containsBean(viewName)) {
			if (logger.isDebugEnabled()) {
				logger.debug("No matching bean found for view name '" + viewName + "'");
			}
			// Allow for ViewResolver chaining...
			return null;
		}
		if (!context.isTypeMatch(viewName, View.class)) {
			if (logger.isDebugEnabled()) {
				logger.debug("Found matching bean for view name '" + viewName +
						"' - to be ignored since it does not implement View");
			}
			// Since we're looking into the general ApplicationContext here,
			// let's accept this as a non-match and allow for chaining as well...
			return null;
		}
		return context.getBean(viewName, View.class);
	}
- 基本合法性判断完成后,通过上下文对象获取视图Bean
    知行合一
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号