2.自动配置原理

@SpringBootApplication注解是@SpringBootConfiguration, @EnableAutoConfiguration, @ComponentScan这三个注解的组合; 其中@EnableAutoConfiguration表示开启自动配置
@EnableAutoConfiguration代码:

@AutoConfigurationPackage
// 可以看到注入了该bean
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
    //...
}
image.png

SpringFactoriesLoader.loadFactoryNames这个方法会从指定路径读取信息
image.png
image.png

而所有自动配置相关的类都在spring-boot-autoconfigure这个包下
image.png
发现spring.factories中写了大量的自动配置类的全限定名; 选一个DispatcherServletAutoConfiguration打开看看
image.png
image.png

总结:

  1. SpringBoot先加载所有的自动配置类 xxxxxAutoConfiguration
  2. 每个自动配置类按照条件进行生效,一般还会有xxxProperties类和配置文件中的配置相绑定
  3. 生效的配置类就会给容器中装配很多bean了

推荐阅读更多精彩内容