Springboot自动配置原理

Springboot的核心注解@SpringBootApplication

这个注解上有三个注解

@SpringBootConfiguration

@EnableAutoConfiguration

@ComponentScan

其中@SpringBootConfiguration和@ComponentScan都是原来Spring的注解,并不是Springboot新带来的注解只有@EnableAutoConfiguration是新注解,这个注解顾名思义就是开启自动配置的注解
总结,@EnableAutoConfiguration作用

  1. 从classpath中搜索所有META-INF/spring.factories配置文件,然后将其中org.springframework.boot.autoconfigure.EnableAutoConfiguration key对应的配置项加载到spring容器
  2. 只有spring.boot.enableautoconfiguration为true(默认为true)的时候,才启用自动配置
  3. @EnableAutoConfiguration还可以进行排除,排除方式有2中,一是根据class来排除(exclude),二是根据class name(excludeName)来排除
  4. 其内部实现的关键点有
    1)ImportSelector 该接口的方法的返回值都会被纳入到spring容器管理中
    2)SpringFactoriesLoader 该类可以从classpath中搜索所有META-INF/spring.factories配置文件,并读取配置