SpringBoot内置http编码功能为例分析自动配置过程( 五 )

很明显 , 它被@ConditionalOnClass 注解 ,并且指定实例化的条件为类路径下必须有CharacterEncodingFilter 存在 。 再看一下该类的其他注解 。
.@Configuration:指定该类作为配置项来进行实例化操作 。
.@ EnableConfigurationProperties:参数为 HttpProperties.class,开启属性注入 , 会将参数中的 HttpProperties 注入该类 。
. @ConditionalOnWebApplication: 参数为 Type .SERVLET, 说明该类只有在基于 servlet的 Web 应用中才会被实例化 。
.@ConditionalOnClass:参数为 CharacterEncodingFilter.class,只有该参数存在 , 才会被实例化 。
@ConditionalOnProperty:指定配置文件内 spring .ttp.encoding 对应的值 , 如果为 enabled才会进行实例化 , 没有配置则默认为 true 。
.@ConditionalOnMissingBean: 注释于方法上 , 与@Bean 配合 , 当容器中没有该 Bean 的实例化对象时才会进行实例化 。
其中 HttpProperties 类的属性值对应着 application.yml 或 application.properties的配通过注解@ConfigurationProperties(prefix="sprig.http")实现的属性注入 。 关于属性注入 , 后面章节会详细讲解 , 这里我们先看一下源代码和对应的配置文件参数 。 @ConfigurationProperties(prefix = "spring.http" )
public class HttpProperties {...public static class Encoding {public static final Charset DEFAULT_ CHARSET = StandardCharsets.UTF_ 8;private Charset charset = DEFAULT CHARSET;private Boolean force;private Boolean forceRequest;private Boolean forceResponse;private Map mapping;...}}而在 application.properties 中 , 我们会进行如下对应配置:
spring . http. encoding . force=truespring . http. encoding. charset=UTF-8spring . http. encoding . force-request=true...小结本章围绕SpringBoot的核心功能展开 , 带大家从总体上了解 Spring Boot 自动配置的原理以及自动配置核心组件的运作过程 。 只有掌握了这些基础的组建内容及其功能 , 我们在后续集成其他三方类库的自动配置时 , 才能够更加清晰地了解它们都运用了自动配置的哪些功能 。 本章需重点学习自动配置原理、@EnableAutoConfiguration、@Import、ImportSelector、@Conditional 以及示例解析部分的内容 。
本文给大家讲解的内容是AutoConfiguration事件注册和@Conditional 条件注解、实例解析;

  1. 下篇文章给大家讲解的是SpringBoot构造流程源码分析;
  2. 觉得文章不错的朋友可以转发此文关注小编;
  3. 感谢大家的支持!


推荐阅读