Spring Boot 的自动装配(Auto-configuration)是 Spring Boot 框架的核心特性之一。通过自动装配可以自动配置和加载 Spring Boot 所需的各种组件和功能,从而大大的减少开发人员手动配置的工作。

在传统的 Spring 应用程序中,我们需要手动配置各种组件,如数据源、Web 容器、事务管理器等。这些配置需要编写大量的 XML 配置文件或 Java 配置类,增加了开发的工作量和复杂性。而 Spring Boot 的自动装配通过约定大于配置的原则,根据项目的依赖和配置信息,自动进行配置,使得开发人员无需进行大量的手动配置。

自动装配工作原理

Spring Boot 在启动时,会检索所有的 Spring 模块,找到符合条件的配置并应用到应用上下文中。这个过程发生在 SpringApplication 这个类中。

Spring Boot 自动装配主要依靠两部分:

  1. SpringFactoriesLoader 驱动:在启动过程中会加载 META-INF/spring.factories 配置文件,获取自动装配相关的配置类信息。

  2. 条件装配:Spring Boot 不会永远都自动装配,它会根据类路径下是否存在某个名称符合命名规则的自动装配类来决定是否进行自动装配。这就是条件装配,通过 @Conditional 条件注解完成。

自动装配流程

Spring Boot 自动装配执行流程如下:

  1. Spring Boot 启动时会创建一个 SpringApplication 实例,该实例存储了应用相关信息,它负责启动并运行应用。

  2. 实例化 SpringApplication 时,会自动装载 META-INF/spring.factories 中配置的自动装配类。

  3. SpringApplication 实例调用 run() 方法启动应用。

  4. 在 run() 方法中,实例会创建默认的应用上下文 Environment 以及 ApplicationContext。

  5. SpringApplication 会通过 ListableBeanFactory 加载应用上下文 ApplicationContext 中的所有 BeanDefinition。

  6. 在 BeanDefinition 加载过程中,SpringApplication 会检测是否存在基于 @Conditional 条件装配注解的自动装配类。

  7. 如果存在且 @Conditional 条件校验成功,则会装配这些自动装配类。

  8. 这些自动装配类通过 @EnableAutoConfiguration、@Configuration 等注解,装配默认的 Spring Bean。

  9. 装配完成后,Spring Boot 将启动应用,这里会启动嵌入的 Web 服务器,如 Tomcat 并发布 Web 应用。

  10. 发布完成,Spring Boot 应用启动成功。

小结

自动装配是 Spring Boot 框架中的一个重要特性,它可以帮助开发人员更加方便地使用 Spring Boot 框架,提高开发效率,保证应用程序的正确性和稳定性。

特殊说明

以上内容来自我的《Java 面试突击训练营》,这门课程是有着十几年工作经验(前 360 开发工程师),10 年面试官经验的我,花费 4 年时间打磨完成的一门视频面试课。学完训练营的课程之后,基本可以应对目前市面上绝大部分公司的面试了,并且课程配备了 9 大就业服务,帮助上千人找到 Java 工作,其中上百人拿到大厂 Offer,学员最高薪资 70W 年薪,面试课目录和 9 大服务如下:

加我微信咨询:vipStone【备注:训练营】