![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=1739257922-oBAlK1N2XAOMb6PobbDGPywBWdbWg3s4-0-0e27143f0b796944b1b08528c22c5d12)
在使用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=1739257922-NPcwLdVbl7hR55QlxgzAx3iulzVPnfw6-0-d93b20f421376ac1c2aefabc81c0e6ca)
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/137-1.jpg?sign=1739257922-bZnoerBt4gyf5plUxwOOWl8M1gHxKoN5-0-f84c0306937268a7a3b5746af2e87934)
在TestController控制器中新增httpMessageConverterTest()方法,代码如下所示:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/137-2.jpg?sign=1739257922-LBc6Yl4nUP5cIZ1jcAfvvPQAriGcYBpB-0-248ad25456e71e8ca07283805519d81b)
上述代码的作用就是拿到封装好的SaleGoods对象,在进行简单的属性修改后,最后将对象数据返回。
在编码完成后重启项目,并发送请求数据进行测试,请求数据如下所示:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/137-3.jpg?sign=1739257922-cPImmYYyejVs068MLvdIB2zW3SMqC5VI-0-0d55ea2e6abb2d4df3a84f71fc037d0e)
由于这里是POST请求,因此没有直接使用浏览器访问,而使用postman软件进行模拟请求,最终获得的结果如图7-3所示。
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/138-1.jpg?sign=1739257922-uyuwIVXlgzQXG3IVpSLD6QOnZiCQT6aA-0-b91a509d047d7fc8b6bd57809c8002b7)
图7-3 使用postman发送请求
由于消息转换器的存在,对象数据的读取不仅简单而且完全正确,响应时也不用自行封装工具类,使得开发过程变得更加灵活和高效。开发人员使用Spring Boot开发项目完全不用再做额外的配置工作,只需关心业务编码即可。