springboot源碼解析autoconfigure之HttpEncodingAutoConfiguration

說在前面spring

本次開始spring-boot-autoconfigure源碼解析之HttpEncodingAutoConfigurationapp

 

源碼解析ide

@Configuration
@EnableConfigurationProperties(HttpEncodingProperties.class)
@ConditionalOnWebApplication
@ConditionalOnClass(CharacterEncodingFilter.class)
@ConditionalOnProperty(prefix = "spring.http.encoding", value = "enabled", matchIfMissing = true)
public class HttpEncodingAutoConfiguration {

   private final HttpEncodingProperties properties;
   public HttpEncodingAutoConfiguration(HttpEncodingProperties properties) {
      this.properties = properties;
   }

// 初始化CharacterEncodingFilter
   @Bean
   @ConditionalOnMissingBean(CharacterEncodingFilter.class)
   public CharacterEncodingFilter characterEncodingFilter() {
      CharacterEncodingFilter filter = new OrderedCharacterEncodingFilter();
      filter.setEncoding(this.properties.getCharset().name());
      filter.setForceRequestEncoding(this.properties.shouldForce(Type.REQUEST));
      filter.setForceResponseEncoding(this.properties.shouldForce(Type.RESPONSE));
      return filter;
   }

   @Bean
   public LocaleCharsetMappingsCustomizer localeCharsetMappingsCustomizer() {
      return new LocaleCharsetMappingsCustomizer(this.properties);
   }

   private static class LocaleCharsetMappingsCustomizer
         implements EmbeddedServletContainerCustomizer, Ordered {

      private final HttpEncodingProperties properties;
      LocaleCharsetMappingsCustomizer(HttpEncodingProperties properties) {
         this.properties = properties;
      }

      @Override
      public void customize(ConfigurableEmbeddedServletContainer container) {
         if (this.properties.getMapping() != null) {
            container.setLocaleCharsetMappings(this.properties.getMapping());
         }
      }

      @Override
      public int getOrder() {
         return 0;
      }

   }

}

 

說在最後spring-boot

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

相關文章
相關標籤/搜索