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:禁止的自动配置
        
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值