- Spring Boot实战:从0开始动手搭建企业级项目
- 十三
- 522字
- 2021-08-13 19:43:42
7.5 消息转换器HttpMessageConverter
HttpMessageConverter的设置也是通过WebMvcAutoConfigurationAdapter完成的,源码如下所示:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/135-4.jpg?sign=1739347193-iNRDDptJ6RWjqf1ZoeCmjk2uHgnBaEuQ-0-2be3dfb75d78f33155f501e3455e573a)
在使用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=1739347193-3SPbpOjioCLiuonuPzXy9a7p0McBOWEO-0-7e6471fe37748ca769bce36850e931c8)
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/137-1.jpg?sign=1739347193-qz778v8wNjJhuqE3hOboKhdWtJ5Gnohg-0-f9c16cac2ca0be454064b4e31aafa3e3)
在TestController控制器中新增httpMessageConverterTest()方法,代码如下所示:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/137-2.jpg?sign=1739347193-eaq54dswx0leee016x9U48ECmQ8XJOf8-0-e86943283daada8c4662f0cf783099dc)
上述代码的作用就是拿到封装好的SaleGoods对象,在进行简单的属性修改后,最后将对象数据返回。
在编码完成后重启项目,并发送请求数据进行测试,请求数据如下所示:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/137-3.jpg?sign=1739347193-O6vPE0XPzTxufTfZmllRBteQlHUPmHjW-0-d50d049a06f9016b0e6d3ae8ef3b1a1c)
由于这里是POST请求,因此没有直接使用浏览器访问,而使用postman软件进行模拟请求,最终获得的结果如图7-3所示。
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/138-1.jpg?sign=1739347193-vo0YKZ073phxjQh6IgTzAXG7w1Vcpgde-0-ce18f275605e0dbdc3a908e4b15c34bc)
图7-3 使用postman发送请求
由于消息转换器的存在,对象数据的读取不仅简单而且完全正确,响应时也不用自行封装工具类,使得开发过程变得更加灵活和高效。开发人员使用Spring Boot开发项目完全不用再做额外的配置工作,只需关心业务编码即可。