全部学科
Python全栈
python
NodeJS全栈
nodejs
📝 1 篇文章 24 道配套习题

自定义处理器与适配器专题

专题说明

本专题深入讲解SpringMVC自定义处理器与适配器的实现方法,掌握HandlerMapping与HandlerAdapter的底层扩展机制。

学习目标

  1. 理解Handler与HandlerAdapter的关系
  2. 掌握自定义Handler的实现方式
  3. 熟练实现自定义HandlerMapping
  4. 掌握自定义HandlerAdapter开发

学习内容

  • Handler类型与体系
  • 自定义HandlerMapping
  • 自定义HandlerAdapter
  • HandlerMethod扩展
  • 自定义Handler注册

学习建议

深入理解SpringMVC的Handler体系,掌握组件扩展的底层原理与实现方法。

📝 配套习题(24 题)

💡 参考答案在文末
判断题
1

自定义参数解析器注册后,会添加到默认解析器列表的末尾,因此如果默认解析器已经支持某种参数类型,自定义解析器不会被执行。

A

B

2

自定义HandlerMapping和自定义HandlerAdapter必须配套使用,HandlerMapping返回的Handler对象必须能被某个HandlerAdapter的supports方法识别。

A

B

单选题
3

自定义HttpMessageConverter需要实现哪个接口?

A

MessageConverter

B

HttpMessageConverter

C

Converter<T,S>

D

MediaTypeConverter

4

自定义参数解析器需要实现哪个接口?

A

ArgumentResolver

B

HandlerMethodArgumentResolver

C

ParameterResolver

D

MethodArgumentProcessor

5

自定义HandlerAdapter需要实现哪个接口?

A

Adapter

B

HandlerAdapter

C

ControllerAdapter

D

MethodAdapter

6

自定义HandlerMapping的最佳实践是继承哪个类?

A

HandlerMapping

B

AbstractHandlerMapping

C

RequestMappingHandlerMapping

D

SimpleUrlHandlerMapping

7

自定义拦截器需要实现哪个接口?

A

Filter

B

HandlerInterceptor

C

WebMvcConfigurer

D

InterceptorRegistry

8

自定义返回值处理器需要实现哪个接口?

A

ReturnValueHandler

B

HandlerMethodReturnValueHandler

C

ResultProcessor

D

ResponseHandler

9

自定义异常解析器需要实现哪个接口?

A

ExceptionHandler

B

HandlerExceptionResolver

C

ControllerAdvice

D

ErrorResolver

多选题
10

自定义HandlerMapping的应用场景有哪些?

A

基于数据库配置动态路由URL到Handler

B

基于租户ID或用户角色路由到不同的Handler

C

支持特殊的URL匹配规则如正则表达式匹配

D

实现A/B测试功能路由到不同版本的处理逻辑

11

RequestResponseBodyMethodProcessor同时实现了HandlerMethodArgumentResolver和HandlerMethodReturnValueHandler接口,以下关于它的说法正确的是?

A

作为参数解析器处理@RequestBody注解的参数

B

作为返回值处理器处理@ResponseBody注解的返回值

C

使用HttpMessageConverter完成序列化和反序列化

D

可以自定义扩展以支持特殊的请求/响应格式

12

自定义HandlerMethodReturnValueHandler的实现要点有哪些?

A

在supportsReturnType中判断返回值类型或方法注解

B

在handleReturnValue中处理返回值并设置ModelAndViewContainer

C

通过WebMvcConfigurer的addReturnValueHandlers方法注册

D

可以处理特殊格式的响应如CSV导出、PDF生成等

13

实现自定义拦截器并注册到SpringMVC的正确步骤有哪些?

A

创建类实现HandlerInterceptor接口

B

在preHandle方法中实现拦截逻辑

C

创建@Configuration类实现WebMvcConfigurer接口

D

在addInterceptors方法中通过InterceptorRegistry注册拦截器

14

自定义HttpMessageConverter注册到SpringMVC的正确方式有哪些?

A

通过WebMvcConfigurer的configureMessageConverters方法添加

B

通过WebMvcConfigurer的extendMessageConverters方法扩展

C

直接使用@Bean注解注入HttpMessageConverter

D

通过RequestMappingHandlerAdapter的setMessageConverters方法设置

15

自定义HandlerAdapter的应用场景有哪些?

A

支持自定义Handler类型的执行逻辑

B

实现特殊的参数绑定或返回值处理

C

集成非SpringMVC的控制器框架如Struts

D

为WebSocket、RPC等特殊请求类型提供适配

16

自定义HandlerExceptionResolver的实现方式有哪些?

A

直接实现HandlerExceptionResolver接口

B

继承AbstractHandlerExceptionResolver抽象类

C

使用@ExceptionHandler注解配合@ControllerAdvice

D

实现Ordered接口设置解析优先级

17

自定义HandlerMethodArgumentResolver的实现要点有哪些?

A

在supportsParameter中判断参数类型或注解

B

在resolveArgument中实现具体的参数解析逻辑

C

通过WebMvcConfigurer的addArgumentResolvers方法注册

D

可以结合自定义注解标记需要特殊解析的参数

填空题
18

自定义异常解析器实现HandlerExceptionResolver接口时,需要实现____________方法,该方法接收____________异常对象,返回____________表示异常已处理,返回null表示该解析器无法处理此异常。

19

注册拦截器时,通过____________方法添加拦截器实例,通过____________设置拦截路径(如"/**"),通过____________排除不需要拦截的路径(如"/login"),可通过order方法设置拦截器执行顺序。

20

继承AbstractHandlerMapping自定义HandlerMapping时,需要实现____________方法获取Handler对象,该方法返回____________类型的Handler。设置____________属性可以控制HandlerMapping的查找顺序,数值越小优先级越高。

21

自定义返回值处理器实现HandlerMethodReturnValueHandler接口时,____________方法判断是否支持该返回值类型,____________方法处理返回值。如果需要直接写入响应体而不渲染视图,应设置____________的requestHandled属性为true。

22

自定义参数解析器实现HandlerMethodArgumentResolver接口时,____________方法接收____________对象判断是否支持解析,返回____________表示支持,resolveArgument方法执行实际的参数解析并返回参数值对象。

23

自定义HandlerAdapter实现HandlerAdapter接口时,____________方法判断是否支持该Handler类型,____________方法执行Handler并返回____________对象。注册自定义HandlerAdapter可以通过@Bean注解直接注入容器。

24

自定义HttpMessageConverter时,____________方法判断是否支持将请求体转换为对象,____________方法判断是否支持将对象写入响应体,____________方法返回支持的媒体类型列表,如application/json表示JSON格式。

参考答案
1.正确 2.正确 3.B 4.B 5.B 6.B 7.B 8.B 9.B 10.A;B;C;D 11.A;B;C;D 12.A;B;C;D 13.A;B;C;D 14.A;B;C 15.A;B;C;D 16.A;B;C;D 17.A;B;C;D 18.resolveException;Exception;ModelAndView 19.addInterceptor;addPathPatterns;excludePathPatterns 20.getHandlerInternal;Object;order 21.supportsReturnType;handleReturnValue;ModelAndViewContainer 22.supportsParameter;MethodParameter;true 23.supports;handle;ModelAndView 24.canRead;canWrite;getSupportedMediaTypes
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 文件上传下载进阶专题
下一个专题 → 请求响应与数据返回专题
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码