zoukankan      html  css  js  c++  java
  • springMVC源码之 HttpMessageConverters

    如果嫌springBoot自带的序列化工具JACKSON不好,可以用fastJson代替。具体做法是用@Bean注解去注册一个HttpMessageConverters类型的bean: httpMessageConverter,其构造函数里的参数是fastJson的messageConverter。

    看看底层发生了什么:HttpMessageConverters的被使用是在RequestMappingHandlerAdapter处理controller方法返回值的时候,在RequestMappingHandlerAdapter实例化的时候被收集,实例化是在WebMvcAutoConfiguration的内部类EnableWebMvcConfiguration的@Bean注解的方法,在方法中,有adapter.setMessageConverters(getMessageConverters());在getMessageConverters方法中,configureMessageConverters方法把所有WebMvcConfigurer类型的bean都收集起来,然后调用他们的configureMessageConverters方法,这些WebMvcConfigurer里面有个叫WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter的,它的构造方法中会自动注入HttpMessageConverters(HttpMessageConverters类型的bean在spring工厂本来是没有的,如果有,那就是我们自定义的),而它的configureMessageConverters方法是取出我们自定义的这个HttpMessageConverters,把里面配置的httpMessageConverter都取出来,和default的HttpMessageConverter合并到一个list中,传递给RequestMappingHandlerAdapter,而且自定义的converter先被放入list,因为RequestMappingHandlerAdapter找converter的时候是在list中从前到后找的,所以fastJson的messageConverter可以覆盖JACKSON的,

    注意:HttpMessageConverters向spring工厂的注册只能一次,否则会出现注入的错误。

  • 相关阅读:
    LeetCode 123 Best Time to Buy and Sell Stock III
    直接选择排序算法汇总
    zoom:1是什么意思
    怎么去掉织梦网站首页带的index.html/index.php
    wamp apache无法启动的解决方法
    提交到svn服务器时,一直缓冲不,
    桌面上图标都不见了怎么办听语音
    如何清除网上浏览痕迹?清除缓存
    TortoiseSVN文件夹及文件图标不显示解决方法
    快捷键
  • 原文地址:https://www.cnblogs.com/chuliang/p/11355764.html
Copyright © 2011-2022 走看看