7.5 消息转换器HttpMessageConverter
HttpMessageConverter的设置也是通过WebMvcAutoConfigurationAdapter完成的,源码如下所示:
在使用Spring MVC开发Web项目时,使用@RequestBody、@ResponseBody注解进行请求实体的转换和响应结果的格式化输出非常普遍。以JSON数据为例,这两个注解的作用分别可以将请求中的数据解析成JSON并绑定为实体对象以及将响应结果以JSON格式返回给请求发起者,但HTTP请求和响应是基于文本的。也就是说在Spring MVC内部维护了一套转换机制,也就是开发人员通常所说的“将JSON格式的请求信息转换为一个对象,将对象转换为JSON格式并输出为响应信息。”这些就是HttpMessageConverter的作用。
举一个简单的例子,首先在项目中新建entity包并定义一个实体类SaleGoods,然后通过@RequestBody、@ResponseBody注解进行参数的读取和响应,代码如下所示:
在TestController控制器中新增httpMessageConverterTest()方法,代码如下所示:
上述代码的作用就是拿到封装好的SaleGoods对象,在进行简单的属性修改后,最后将对象数据返回。
在编码完成后重启项目,并发送请求数据进行测试,请求数据如下所示:
由于这里是POST请求,因此没有直接使用浏览器访问,而使用postman软件进行模拟请求,最终获得的结果如图7-3所示。
图7-3 使用postman发送请求
由于消息转换器的存在,对象数据的读取不仅简单而且完全正确,响应时也不用自行封装工具类,使得开发过程变得更加灵活和高效。开发人员使用Spring Boot开发项目完全不用再做额外的配置工作,只需关心业务编码即可。