springboot源码分析:自动装配原理

在这里插入图片描述

@SpringBootApplication注解进去有三个主要注解
在这里插入图片描述
1.@SpringBootConfiguration代表当前是一个配置类, 是对@Configuration的封装,作用都差不多
2. @ComponentScan 就是一个包扫描
3. 核心@EnableAutoConfiguration, 里面主要是这两个注解
4.

3.1: @AutoConfigurationPackage 自动配置包
点击进去看见如下:就是给容器中导入组件。利用Registrar给容器中导入一系列组件。
在这里插入图片描述
Registrar里面有两个方法, 第一个就是得到一个报名包名, 就是我们当前的启动类所在的包, 然后把这个包下的所有组件注册到容器里面,(就是把我们自己写的组件注册进去在这里插入图片描述
3.1: @Import(AutoConfigurationImportSelector.class)
AutoConfigurationImportSelector里面主要就是用这个方法个容器中导入组件。
在这里插入图片描述
在这个方法里面, 通过这里的get方可以得到133个容器,都叫XXXXAutoConfiguration
在这里插入图片描述
查看get方法, 里面使用的是spring的工厂加载器
在这里插入图片描述
在这里插入图片描述
最终就是利用这个方法给我们加载得到一个mapList
在这里插入图片描述
在这个方法里面有一个方法classLoader.getResources, 这里得到了我们资源加载的路径:里面的参数值是:META-INF/spring.factories, 所以它会扫描所有有这个路径的包
在这里插入图片描述

主要是这个:org.springframework.boot.autoconfigure.EnableAutoConfiguration
这里写死了所有springboot已启动就要加载的所有组件
在这里插入图片描述

虽然这里全部加载了, 但是最后会按需加载
原因是:我们没有导入相关的包, 我们都没有相关的场景, 所以不能生效,
@ConditionalOnClass这里代表有Advice.class这个类的时候, 下面的代码才生效
在这里插入图片描述
总结springboot启动时候会加载素有的组件, 但是最后会有很多不会生效,只会按需分配。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值