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

  • 相关阅读:
    iOS 中UI控件的各种对齐方式总结
    BLE 广播数据解析
    Objective-C中一种消息处理方法performSelector: withObject:
    ios的@property属性和@synthesize属性
    iOS中的字符串扫描类NSScanner
    iOS开发技巧(系列十八:扩展UIColor,支持十六进制颜色设置)
    NSMakeRange基础函数应用
    Objective-C中的占位符,打印BOOL类型数据
    NSUInteger和NSInteger和int
    HDU4870:Rating(DP)
  • 原文地址:https://www.cnblogs.com/chuliang/p/11355764.html
Copyright © 2011-2022 走看看