购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.6 自定义ViewResolver

在前面章节讲解SpringMVC自动配置原理的时候,可以知道如果有些组件可以有多个(ViewResolver)将用户配置的和自己默认的组合起来;那么ViewResolver是什么,有什么用,下面就来对ViewResolver的解析。这里以BeanNameViewResolver的bean的实例化为例相应解析,对于源码如下所示。

BeanNameViewResolver主要通过逻辑视图名称匹配定义好的视图Bean对象。一般情况下,对应的Bean对象需要注册到Spring的上下文中,BeanNameViewResolver会返回名称匹配的视图对象。BeanNameViewResolver实例化的前提条件是容器中View实现类的Bean存在,源码如下所示。

BeanNameViewResolver的resolveViewName方法首先通过名称判断对应视图是否存在,当通过名称无法匹配时,会通过类型视图判断,如果存在对应的Bean,则获取对应的View对象并返回。

4.6.1 实现自定义视图

创建一个SpringBoot工程,再创建一个ThisMyView.java类并实现View接口,重写getContentType与render方法,getContentType方法用于设置字符集,render方法用于返回数据信息,对应代码如下所示。

Controller层创建一个ThisMyViewController控制请求类并在该类上使用注解@Controller,然后在类中编写testThisMyView方法返回一个视图名称,需要在该方法上加上注解@RequestMapping来定义一个请求地址,代码如下所示。

总结

本章学习了SpringBoot是如何嵌入式Servlet容器以及任何集成原始的Filter,Listener如何自定义@ResponseBody渲染,SpringBoot中还通过引入了spring-boot-starter-web依赖,完成了DispatcherServlet的自动配置之后,便会通过WebMvcAutoConfiguration进行SpringMVC的自动配置。

作业

1.SpringMVC的自动配置的原理是什么?

2.如何自定义原生的Filter?

3.如何使用注解的方式加载原生的ServletAPI? DaLmeAqGt93H72sfUXcJIJw5VO8hx/idnE2syv7AaCJVEZ3nsTxCJ/D3MGTfAUja

点击中间区域
呼出菜单
上一章
目录
下一章
×