Springboot2.0.X自动装配原理自动装配原理 - Go语言中文社区

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


1.Springboot2.0.X自动装配原理自动装配原理
 a.Springboot如何自动装配:
   以HttpEncodingAutoConfiguration通过源码为例;
     1.@Configuration:标识此类为配置类,将此类纳入SpringIOC容器;
     2. @EnableConfigurationProperties(value=HttpEncodingProperties.class)
        通过HttpEncodingProperties将默认编码设置为UTF-8(自动装配为UTF-8)
     3. 修改默认编码
        通过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,则条件成立;

HttpEncodingAutoConfiguration

@Configuration  //标识此类为配置类,将此类纳入SpringIOC容器;
 @EnableConfigurationProperties(value=HttpEncodingProperties.class)//  通过HttpEncodingProperties将默认编码设置为UTF-8
 @ConditionalOnWebApplication(type=SERVLET)
 @ConditionalOnClass(value=org.springframework.web.filter.CharacterEncodingFilter.class)
 @ConditionalOnProperty(prefix="spring.http.encoding",
                       value="enabled",
                       matchIfMissing=true)
.......
}


  

 总结:
       1.每个XxAutoConfiguration都有很多@ConditionalOnXx,当这些条件满足是,则此配置自动生效;
         但是可以手工修改自动装配XxxProperties中的prefix+属性名=value;
       2.全局配置文件中的key,来源于某个XxxProperties中的prefix+属性名=value;    
    
    2.如何知道springboot开启,禁止了哪些自动装配?
        1.在application.properties文件中配置 debug=true
           Positive matches:开启的自动配置
           Negative matches:禁止的自动配置
        
    

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_29393273/article/details/87899828
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-05-11 23:07:32
  • 阅读 ( 1106 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢