一、前言
在了解SpringBoot自动配置原理一中,SpringBoot主启动类中有一个注解@SpringBootApplication,里面有一个@EnableAutoConfiguration注解,在这里面包含有@AutoConfigurationPackage和@Import(AutoConfigurationImportSelector.class)两个注解,以下主要是记录@Import(AutoConfigurationImportSelector.class)与依赖包spring-boot-autoconfigure之间的联系。
二、spring-boot-autoconfigure包
一般项目中的pom文件都会依赖一个spring-boot-parent依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
而在这个父依赖中又有一个spring-boot-dependencies依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.5.RELEASE</version>
</parent>
在这个依赖里面又有一个spring-boot-autoconfigure
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure-processor</artifactId>
<version>2.0.5.RELEASE</version>
</dependency>
这个依赖会把开发中大部分需要的场景都导入进来。
三、@Import(AutoConfigurationImportSelector.class)与依赖包spring-boot-autoconfigure
在@Import(AutoConfigurationImportSelector.class)这个注解中会把spring-boot-autoconfigure这个包下的场景配置类都导入到容器中,当你加入指定依赖的时候才会开启特定场景或者说在配置文件中加入特定配置也可以开启对象场景。比如说:你想使用web开发场景,就在pom文件中加入web的springboot依赖,就可以开启web场景了。总的来说Springboot虽然自动容器中加入了大部分场景,但是是按需开启的。