本文分类:
SpringBoot

SpringBoot 自动配置实际上是一种 注解 + SPI 机制,本文以 Spring Boot 2.2.0.RELEASE 为例,结合一个 Starter 示例来说明自动配置原理。

  1. 一个典型的 SpringBoot 程序都会使用 @SpringBootApplication;

  2. @SpringBootApplication 被 @EnableAutoConfiguration 注解;

  3. @EnableAutoConfiguration 被 @Import(AutoConfigurationImportSelector.class) 注解

  4. AutoConfigurationImportSelector 是一个 ImportSelector,Import 注解会调用其 selectImports 方法,并将返回的字符串作为类名创建 Bean;

  5. selectImports -> getAutoConfigurationEntry -> getCandidateConfigurations -> SpringFactoriesLoader.loadFactoryNames

  6. SpringFactoriesLoader.loadFactoryNames 的功能主要是从 “META-INF/spring.factories” 文件中读取第一个参数指定的配置, EnableAutoConfiguration.class;

至此,Spring Boot 自动配置的原理已经清楚了。

本文来自 [时光记 - 王智超的个人空间](www.hiwzc.com),转载请注明出处。