Springboot2.0.X自动装配原理自动装配原理

1.Springboot2.0.X自动装配原理自动装配原理
 a.Springboot如何自动装配:
   以HttpEncodingAutoConfiguration通过源码为例;
     1.@Configuration:标识此类为配置类,将此类纳入SpringIOC容器;
     2. @EnableConfigurationProperties(value=HttpEncodingProperties.class)
        通过HttpEncodingProperties将默认编码设置为UTF-8(自动装配为UTF-8)
        修改默认编码
        通过HttpEncodingProperties中的prefix+属性名(charset)进行修改[在配置文件中yml/properties],
        该注解提供了默认的utf-8,并提供了prefix+属性名的方式来修改编码;
        在配置文件中配置;
        spring.http.encoding.charset=ISO-8859-1        
     3.@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
          如果是一个servlet项目,则成立
        @ConditionalOnClass(CharacterEncodingFilter.class)
          如果有CharacterEncodingFilter则成立
        @ConditionalOnProperty(prefix = "spring.http.encoding", value = "enabled", matchIfMissing = true)
          Conditional条件;on当...的时候;WebApplication web应用;
          value:等价于name;
          prefix:前缀;
          matchIfMissing:如果没有匹配则满足;
        当属性满足条件时,此条件成立:如果没有配置spring.http.encoding.enabled=xxxx,则条件成立;
    总结:
       1.每个XxAutoConfiguration都有很多@ConditionalOnXx,当这些条件满足是,则此配置自动生效;
         但是可以手工修改自动装配XxxProperties中的prefix+属性名=value;
       2.全局配置文件中的key,来源于某个XxxProperties中的prefix+属性名=value;    
    
    2.如何知道springboot开启,禁止了哪些自动装配?
        1.在application.properties文件中配置 debug=true
           Positive matches:开启的自动配置
           Negative matches:禁止的自动配置
        
    

猜你喜欢

转载自blog.csdn.net/qq_29393273/article/details/87899828