springboot源碼解析之HttpMessageConvertersAutoConfiguration

說在前面spring

本次開始spring-boot-autoconfigure源碼解析之HttpMessageConvertersAutoConfiguration,springboot轉換器默認支持jsonjson

 

源碼解析springboot

@Configuration
@ConditionalOnClass(HttpMessageConverter.class)
@AutoConfigureAfter({ GsonAutoConfiguration.class, JacksonAutoConfiguration.class })
//http消息轉化器默認是json
@Import({ JacksonHttpMessageConvertersConfiguration.class,
      GsonHttpMessageConvertersConfiguration.class })
public class HttpMessageConvertersAutoConfiguration {

   static final String PREFERRED_MAPPER_PROPERTY = "spring.http.converters.preferred-json-mapper";
   private final List<HttpMessageConverter<?>> converters;
   public HttpMessageConvertersAutoConfiguration(
         ObjectProvider<List<HttpMessageConverter<?>>> convertersProvider) {
      this.converters = convertersProvider.getIfAvailable();
   }

// 加載converters
   @Bean
   @ConditionalOnMissingBean
   public HttpMessageConverters messageConverters() {
      return new HttpMessageConverters((this.converters != null) ? this.converters
            : Collections.<HttpMessageConverter<?>>emptyList());
   }

   @Configuration
   @ConditionalOnClass(StringHttpMessageConverter.class)
   @EnableConfigurationProperties(HttpEncodingProperties.class)
   protected static class StringHttpMessageConverterConfiguration {

      private final HttpEncodingProperties encodingProperties;
      protected StringHttpMessageConverterConfiguration(
            HttpEncodingProperties encodingProperties) {
         this.encodingProperties = encodingProperties;
      }

//    初始化StringHttpMessageConverter
      @Bean
      @ConditionalOnMissingBean
      public StringHttpMessageConverter stringHttpMessageConverter() {
         StringHttpMessageConverter converter = new StringHttpMessageConverter(
               this.encodingProperties.getCharset());
         converter.setWriteAcceptCharset(false);
         return converter;
      }

   }

}

 

說在最後app

本次僅表明我的觀點,僅供參考。ide

相關文章
相關標籤/搜索