![Spring Boot实战:从0开始动手搭建企业级项目](https://wfqqreader-1252317822.image.myqcloud.com/cover/850/40107850/b_40107850.jpg)
7.5 消息转换器HttpMessageConverter
HttpMessageConverter的设置也是通过WebMvcAutoConfigurationAdapter完成的,源码如下所示:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/135-4.jpg?sign=1738865481-4cYqWdEyoNUlM62sIsUy2ciZX6FYJqxn-0-b8fc8cdb83dc50fbf7617dcfd5572409)
在使用Spring MVC开发Web项目时,使用@RequestBody、@ResponseBody注解进行请求实体的转换和响应结果的格式化输出非常普遍。以JSON数据为例,这两个注解的作用分别可以将请求中的数据解析成JSON并绑定为实体对象以及将响应结果以JSON格式返回给请求发起者,但HTTP请求和响应是基于文本的。也就是说在Spring MVC内部维护了一套转换机制,也就是开发人员通常所说的“将JSON格式的请求信息转换为一个对象,将对象转换为JSON格式并输出为响应信息。”这些就是HttpMessageConverter的作用。
举一个简单的例子,首先在项目中新建entity包并定义一个实体类SaleGoods,然后通过@RequestBody、@ResponseBody注解进行参数的读取和响应,代码如下所示:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/136-1.jpg?sign=1738865481-rRcuVnCouH07aoLgebri9K8C23uWcruN-0-ee7df4b75fd3f7945d6bef6344991350)
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/137-1.jpg?sign=1738865481-B3xI1M5KYgyHcOmplWj4N25HCj9sxijj-0-152241cb7b0621aabb74fc540f4a1b7c)
在TestController控制器中新增httpMessageConverterTest()方法,代码如下所示:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/137-2.jpg?sign=1738865481-H927788DkCJ2VBQBGyfRIgOSAlwMHDW5-0-f587b3e24fd943ab5373ee949d881ea2)
上述代码的作用就是拿到封装好的SaleGoods对象,在进行简单的属性修改后,最后将对象数据返回。
在编码完成后重启项目,并发送请求数据进行测试,请求数据如下所示:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/137-3.jpg?sign=1738865481-y1Ve5ILSuSFQd5hAIrP54vklSgJlbZe0-0-69d3df26c98cac7d17397777cd4426e4)
由于这里是POST请求,因此没有直接使用浏览器访问,而使用postman软件进行模拟请求,最终获得的结果如图7-3所示。
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/138-1.jpg?sign=1738865481-NFu47P7GbD36AvLFKUIe0R0m0WNyUSds-0-92d5d4df55f0ea84ee4fa45805139227)
图7-3 使用postman发送请求
由于消息转换器的存在,对象数据的读取不仅简单而且完全正确,响应时也不用自行封装工具类,使得开发过程变得更加灵活和高效。开发人员使用Spring Boot开发项目完全不用再做额外的配置工作,只需关心业务编码即可。