SpringBoot自动装配原理

自动装配(约定大于配置)
  • 主程序类的main方法在加载过程会调用refreshContext(context)刷新容器方法,该方法启用了注解@SpringBootApplication=@ComponentScan(扫描包) + @SpringBootConfiguration + @EnableAutoConfiguration;
  • @EnableAutoConfiguration里组合了@Import(AutoConfigurationImportSelector.class) 加载了AutoConfigurationImportSelector类,该类下有一个selectImports方法;
  • selectImports方法调用了AutoConfigurationMetadataLoader里的一个loadMetadata,该loadMetadata会去扫描路径为 META-INF/spring.factories ,从而加载properties资源
  • 在springboot的autoconfiguration包下的spring.factories里根据全类名反射配置里各种jar对应需要加载的autoconfiguration类,在具体的类上会@ConditionalOnClass(xxx.class)或者@ConditionalOnMissingClass(xxx.class)根据是否导入了jar包而加载资源。

image-20200823211246862

image-20200823211351793

image-20200823211437892

image-20200823211510454

image-20200823211530018

image-20200823211828726

image-20200823211852095

image-20200823212011486

image-20200823212148189

image-20200823212213466

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值