跳到主要内容

Spring MVC系列(9)-HttpMessageConverter报文转换流程源码解析

HttpMessageConverters类

HttpMessageConverters是org.springframework.boot.autoconfigure.http下的一个类,是
Spring Boot提供的管理应用程序中使用HttpMessageConverter的Bean。

提供一种方便的方法来添加和配置额外的HttpMessageConverter到 Web 应用程序。如果需要,可以使用特定的HttpMessageConverters注册此 bean 的实例,否则将使用默认转换器。

HttpMessageConverters维护了一个HttpMessageConverter集合。

private final List<HttpMessageConverter<?>> converters;

注入HttpMessageConverters

在HttpMessageConvertersAutoConfiguration类中,注入了一个默认的HttpMessageConverters。

    @Bean
@ConditionalOnMissingBean
public HttpMessageConverters messageConverters(ObjectProvider<HttpMessageConverter<?>> converters) {


return new HttpMessageConverters((Collection)converters.orderedStream().collect(Collectors.toList()));
}

调用了HttpMessageConverters的构造方法。

    public HttpMessageConverters(boolean addDefaultConverters, Collection<HttpMessageConverter<?>> converters) {


List<HttpMessageConverter<?>> combined = this.getCombinedConverters(converters, addDefaultConverters ? this.getDefaultConverters() : Collections.emptyList());
combined = this.postProcessConverters(combined);
this.converters = Collections.unmodifiableList(combined);
}