返回值序列化扩展

    开发说明

    开发人员可以根据业务需要,通过编程的方式来扩展返回值序列化方式。实施步骤如下,以扩展支持application/xml格式为例:

    1.实现接口

    ```java public class ProduceAppXmlProcessor implements ProduceProcessor {

    } ```

    2.添加配置文件

    在resources下META-INF/services/文件夹新建文件xxx.ProduceProcessor(xxx为接口的包名),内容填写xxx.ProduceAppXmlProcessor(xxx为实现类的包名)。

    开发人员可以对现有的application/json和text/plain两种格式实现逻辑进行重写,也可以对自行扩展的格式进行重写,以重写xml序列化方式为例:

    2.重写doEncodeResponse和方法里的编解码逻辑

    3.更改getOrder方法里的返回值,要比原方法的返回值小,例如返回-1,application/json和text/plain的原方法返回值默认都为0

    4.在resources下META-INF/services/文件夹新建文件xxx.ProduceProcessor(xxx为接口的包名),内容填写xxx.ProduceAppXmlProcessor(xxx为实现类的包名)。

    • 验证

    服务提供者通过produces声明可提供xml序列化能力

    java @RequestMapping(path = "/appXml", method = RequestMethod.POST, produces = MediaType.APPLICATION_XML_VALUE) public JAXBPerson appXml(@RequestBody JAXBPerson person) { return person; }