SpringBoot的自动配置原理

这里用的springboot  1.5.9.RELEASE

 

原理

启动时加载主配置类,开启自动配置功能@EnableAutoConfiguration

 

@EnableAutoConfiguration的作用:

利用EnableAutoConfigurationImportSelector给容器导入一些组件

 

点进去看他类,再点到它的父类

selectImports方法,可看到最关键的一句

点进getCandidateConfigurations这个方法里,SpringFactoriesLoader.loadFactoryNames。

 再点进loadFactoryNames这个方法里,点进这个FACTORIES_RESOURCE_LOCATION

可以看到他的资源,扫描所有jar包类路径META-INF/spring.factories。

 

在这个路径下往下找,有个 loadFactoryNames 方法。找到所有的资源文件,遍历包装成Properties对象 

之后把Properties 转换成list添加到result这个list里

 那么问题来了,factoryClassName哪里来的,是由上一步传过来的class,我们去上一步看看

 回到AutoConfigurationImportSelector类

点进他,找到 EnableAutoConfiguration.class

 

 

去找jar包,就可以发现这个EnableAutoConfiguration的值

由以上可知,每一个这样的xxxAutoConfiguration类都是容器中的一个组件,都加入到容器中,用他们来做自动配置

 

以其中一个来解释自动配置原理HttpEncodingAutoConfiguration。连续按两下Shift键,然后搜索这个类。看下图可以发现,各种条件判断完,就可以决定是否生效

下面这图对应的就是上图的第二行 

 

这个类下有个这个,@Bean给容器中添加一个组件,这个组件的某些值需要从properties属性中获取

然后依据之前的注解

 

最后就可以按照spring.http.encoding这个在application里配置了

  

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值