SpringBoot2学习笔记
四、Web开发
4.5)数据响应与内容协商

4.5.1)响应JSON
4.5.1.1)jackson.jar+@ResponseBody
在POM.xml文件中,配置 spring-boot-starter-web
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
在 spring-boot-starter-web-2.3.4.RELEASE.pom.xml文件中,配置spring-boot-starter-json
<!--web场景自动引入了json场景-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
<version>2.3.4.RELEASE</version>
<scope>compile</scope>
</dependency>
在spring-boot-starter-json-2.3.4.RELEASE.pom.xml文件中,配置 jackson,给前端自动返回json数据;
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.2</version>
<scope>compile</scope>
</dependency>
4.5.1.1.1)返回值解析器

相关源码如下:
try {
this.returnValueHandlers.handleReturnValue(
returnValue, getReturnValueType(returnValue), mavContainer, webRequest);
}
——————————————————————————————————————————————————————————————————————————————————
@Override
public void handleReturnValue(@Nullable Object returnValue, MethodParameter returnType,
ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception {
HandlerMethodReturnValueHandler handler = selectHandler(returnValue, returnType);
if (handler == null) {
throw new IllegalArgumentException("Unknown return value type: " + returnType.getParameterType().getName());
}
handler.handleReturnValue(returnValue, returnType, mavContainer, webRequest);
}
——————————————————————————————————————————————————————————————————————————————————
RequestResponseBodyMethodProcessor
@Override
public void handleReturnValue(@Nullable Object returnValue, MethodParameter returnType,
ModelAndViewContainer mavContainer, NativeWebRequest webRequest)
throws IOException, HttpMediaTypeNotAcceptableException, HttpMessageNotWritableException {
mavContainer.setRequestHandled(true);
ServletServ

本文介绍了SpringBoot中Web开发的数据响应与内容协商,详细讲解了如何响应JSON,包括返回值解析器的工作原理、SpringMVC支持的返回值类型,以及HTTPMessageConverter的机制。内容还包括内容协商的实现,如根据客户端接收能力返回不同媒体类型数据,并展示了自定义MessageConverter实现多协议数据兼容的例子。
最低0.47元/天 解锁文章
1341

被折叠的 条评论
为什么被折叠?



