开发者社区> 问答> 正文

如何替换原来的SpringMVC统一的json消息转换器?

如何替换原来的SpringMVC统一的json消息转换器?

提问43.png

原提问者GitHub用户hyuga0410

展开
收起
大圣东游 2023-04-21 12:07:21 228 0
2 条回答
写回答
取消 提交回答
  • 值得去的地方都没有捷径

    替换SpringMVC中的json消息转换器可以通过以下步骤实现:

    添加Jackson依赖 在Maven的pom.xml文件中添加以下依赖:

    com.fasterxml.jackson.core jackson-databind 2.12.1 创建自定义消息转换器 使用Jackson库,你可以创建一个自定义的消息转换器,以替换默认的SpringMVC中的JSON消息转换器。下面展示一个简单的示例:

    import java.io.IOException; import java.nio.charset.StandardCharsets;

    import org.springframework.http.HttpHeaders; import org.springframework.http.HttpOutputMessage; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageNotWritableException; import org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter;

    import com.fasterxml.jackson.databind.ObjectMapper;

    public class CustomJsonMessageConverter extends AbstractJackson2HttpMessageConverter {

    public CustomJsonMessageConverter() { super(new ObjectMapper(), MediaType.APPLICATION_JSON); }

    @Override protected void writeInternal(Object obj, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException { super.writeInternal(obj, outputMessage); HttpHeaders headers = outputMessage.getHeaders(); headers.set(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE); headers.set(HttpHeaders.CONTENT_ENCODING, StandardCharsets.UTF_8.name()); }

    } 这里的CustomJsonMessageConverter继承了AbstractJackson2HttpMessageConverter,并设置了ObjectMapper和MediaType属性。在writeInternal方法中,它通过使用super.writeInternal(obj, outputMessage)来调用AbstractJackson2HttpMessageConverter中的默认实现,并且在写入消息后设置了一些HTTP头部。

    注册自定义消息转换器 在Spring配置文件中的适当位置,注册自定义消息转换器。

    mvc:annotation-driven mvc:message-converters </mvc:message-converters> </mvc:annotation-driven> 在此示例中,CustomJsonMessageConverter被注册为消息转换器。对于Spring Boot项目,只需要将自定义消息转换器添加到类路径中来替换默认转换器。

    2023-04-21 21:10:25
    赞同 展开评论 打赏
  • fastjson2对SpringMVC的支持com.alibaba.fastjson2.support.spring.http.converter.FastJsonHttpMessageConverter在扩展包里面:

    com.alibaba.fastjson2 fastjson2-extension 2.0.x

    关于Features的使用请参考https://github.com/alibaba/fastjson2/wiki/Features_cn

    原回答者GitHub用户VictorZeng

    2023-04-21 15:01:01
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多