欢迎访问 生活随笔!

ag凯发k8国际

当前位置: ag凯发k8国际 > 前端技术 > javascript >内容正文

javascript

json txt格式转换器-ag凯发k8国际

发布时间:2024/10/12 javascript 27 豆豆
ag凯发k8国际 收集整理的这篇文章主要介绍了 json txt格式转换器_springboot项目中如何定制http消息转换器 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
本文首发于个人网站:spring boot项目中如何定制http消息转换器,如需转载,请注明来源

在构建restful数据服务过程中,我们定义了controller、repositories,并用一些注解修饰它们,但是到现在为止我们还没执行过对象的转换——将java实体对象转换成http的数据输出流。

spring boot底层通过httpmessageconverters和jackson库将java实体类输出为json格式。当有多个转换器可用时,根据消息对象类型和需要的内容类型选择最适合的转换器使用。

在springmvc源码剖析(五)-消息转换器httpmessageconverter一文中,有一张图可以很清楚得表示消息转换器的位置。

消息转换器的目标是:

  • http输入请求格式向java对象的转换;
  • java对象向http输出请求的转换。
  • 有的消息转换器只支持多个数据类型,有的只支持多个输出格式,还有的两者兼备。

    例如:mappingjackson2httpmessageconverter可以将java对象转换为application/json,而protobufhttpmessageconverter仅支持com.google.protobuf.message类型的输入,但是可以输出application/json、application/xml、text/plain和application/x-protobuf这么多格式。

    实践

    在项目中有三种办法配置消息转换器,主要是从可定制性和易用度两个方面进行衡量。

  • 在webconfiguration类中加入@bean定义
  • @bean public bytearrayhttpmessageconverter bytearrayhttpmessageconverter() {return new bytearrayhttpmessageconverter(); }
  • 重写(override)configuremessageconverters方法,扩展现有的消息转换器链表;
  • @override public void configuremessageconverters(list> converters) {converters.add(new bytearrayhttpmessageconverter()); }
  • 更多的控制,可以重写extendmessageconverters方法,首先清空转换器列表,再加入自定义的转换器。
  • @override public void extendmessageconverters(list> converters) {converters.clear();converters.add(new bytearrayhttpmessageconverter()); }

    分析

    spring boot提供了多种方法完成同样的任务,选择哪个取决于我们更侧重便捷性还是更侧重可定制性。

    上述提到的三种方法各有什么不同呢?

    通过@bean定义httpmessageconverter是向项目中添加消息转换器最简便的办法,这类似于之前提到的添加servlet filters。如果spring扫描到httpmessageconverter类型的bean,就会将它自动添加到调用链中。推荐让项目中的webconfiguration继承自webmvcconfigureradapter。

    通过重写configuremessageconverters方法添加自定义的转换器很方便,但有一个弱点:如果项目中存在多个webmvcconfigurers的实例(我们自己定义的,或者spring boot默认提供的),不能确保重写后的configuremessageconverters方法按照固定顺序执行。

    如果需要更精细的控制:清除其他消息转换器或者清楚重复的转换器,可以通过重写extendmessageconverters完成,仍然有这种可能:别的webmvcconfigurer实例也可以重写这个方法,但是这种几率非常小。

    spring boot 1.x系列

  • spring boot的自动配置、command-line-runner
  • 了解spring boot的自动配置
  • spring boot的@propertysource注解在整合redis中的使用


  • 本号(javaadu)专注于后端技术、jvm问题排查和优化、java面试题、个人成长和自我管理等主题,为读者提供一线开发者的工作和成长经验,期待你能在这里有所收获。

    总结

    以上是ag凯发k8国际为你收集整理的json txt格式转换器_springboot项目中如何定制http消息转换器的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得ag凯发k8国际网站内容还不错,欢迎将ag凯发k8国际推荐给好友。

    • 上一篇:
    • 下一篇:
    网站地图