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工厂的注册只能一次,否则会出现注入的错误。

  • 相关阅读:
    jQuery 属性操作
    Codeforces Round #679 (Div. 2, based on Technocup 2021 Elimination Round 1) (个人题解)
    (模板)graham扫描法、andrew算法求凸包
    POJ
    Codeforces Round #677 (Div. 3) (A
    第十三场训练赛
    [kuangbin] 专题13 基础计算几何 题解 + 总结
    特殊的数据结构:主席树
    【计算几何03】距离计算
    Java实现 LeetCode 803 打砖块 (DFS)
  • 原文地址:https://www.cnblogs.com/chuliang/p/11355764.html
Copyright © 2011-2022 走看看