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

  • 相关阅读:
    open系统调用flow之do_last()
    interval tree
    kernel exception时打印出的ESR相关信息
    VFS四大struct:file、dentry、inode、super_block
    vma
    CPU cache
    process mngr misc
    java.io.IOException: Unable to unwrap data, invalid status [CLOSED]
    菜鸟学自动化测试(七)selenium RC 工作原理
    OCX开发与第三方OCX封装
  • 原文地址:https://www.cnblogs.com/chuliang/p/11355764.html
Copyright © 2011-2022 走看看