Spring Boot 自动装配原理 - 源码解析

通过上一篇自定义starter的文章,我们对Spring Boot自动装配的原理已经有了初步了解,为了深入地理解其原理,本篇文章就对该部分源码进行跟踪解析

首先Spring Boot自动装配是指在容器启动的时执行一系列操作,旨在根据添加的依赖、类路径中的内容和各种属性设置来自动配置Spring应用,主要操作有:

  1. 加载并解析META-INF/spring.factories:Spring Boot会在启动时加载并解析META-INF/spring.factories文件(自动配置类和其他Spring Boot需要的信息)
  2. 条件化配置:Spring Boot会根据条件注解来决定是否应该创建某个bean或应用配置,允许Spring Boot在运行时根据当前的环境和配置来决定如何配置应用
  3. 自动配置Bean:基于以上两点,Spring Boot会自动创建并配置bean
  4. 注入依赖:在bean被创建后,Spring Boot会将这些bean注入到需要它们的地方,通常是通过Spring的依赖注入(DI)机制来完成
  5. 设置属性:Spring Boot会根据外部配置(如application.properties/yml文件)来自动设置bean的属性,如果外部配置中没有提供某个属性的值,Spring Boot会使用默认值
  6. 后处理:在所有的bean都被创建和配置后,Spring Boot会进行后处理操作,如注册事件监听器、执行初始化方法等

既然是容器启动时的一系列操作,那我们就从主启动类出发

如图,我们可以看到主启动类上有@SpringBootApplication,它是Spring Boot的核心注解,用于启动一个Spring Boot应用,也是一个组合注解,其中有一个@EnableAutoConfiguration,它允许Spring Boot根据添加的jar依赖自动配置你的Spring应用,我们跟踪源码进去看一下

如图,我们可以看到该注解类上有一个@Import,它是导入注解,用于导入配置类或需要前置加载的类,它的参数AutoConfigurationImportSelector.class,自动装配置导入选择器?它的作用是什么,继续往下跟踪源码

如图,我们可以看到该类中有个selectImports方法,该方法的返回值是一个String[],它的元素就是所有需要自动配置的类名,那它具体是如何获取的呢,方法调用了一个获取自动配置条目的方法,继续往下跟踪源码

如图,该方法中调用了做了一系列操作,其中有一个获取候选配置数据的方法,继续往下跟踪源码

如图,该方法中调用了一个加载工厂名字的方法,继续往下跟踪源码

如图,该方法中调用了一个加载spring工厂的方法,继续往下跟踪源码

如图,该方法中调用了一个获取资源文件的方法,从参数"META-INF/spring.factories"可知是获取该文件中的数据,后面就是对这些文件中的数据做一些处理,不再往下跟踪,如果有兴趣可以继续往下跟踪源码,学习一些处理数据的思路

根据上面跟踪源码,我相信大家对Spring Boot自动装配的原理有了更清晰的理解,希望大家能自己去阅读一下这部分的源码,能够帮助大家再次升华对Spring Boot自动装配的理解,也能够从中学习到大佬开发过程中的处理思路,这里只是拿到了所有需要自动装配的条目,那Spring又是如何在启动时对它们进行自动装配的呢,这就不得不了解Spring Boot的启动流程和原理了,有兴趣的朋友请关注我,下一篇文章我们再见!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值