简单来说,自动装配就是自动将Bean装配到IoC容器中。
实现自动装配在Spring Boot中通过@EnableAutoConfiguration注解来开启,在启动类注解@SpringBootApplication中就自动注入了这个注解。
@Enable注解的作用就是把相关组件的Bean装配到IoC容器中。使用@Enable注解后,Spring会解析到@Import倒入的配置类,从而根据这个配置类中的描述来实现Bean的装配。
@AutoConfigurationPackage作用是把使用了该注解的类所在的包以及子包下所有组件扫描到IoC容器中。
AutoConfigurationImportSelectorImportSelector中有一个selectImports抽象方法,返回一个String数组,在这个数组中可以指定需要装配到IoC容器的类,当在@Import中导入一个ImportSelector的实现类后,会把该实现类中返回的Class名称都装载到IoC容器中。
实验-
自定义两个需要给IoC管理的类,First和Second
-
自定义OwnImportSelector实现ImportSelector
-
仿照@EnableAutoConfiguration自定义AutoImport注解,并在启动类中使用。
-
可以在打印中看到我们自定义的类已经注入成Bean了。
自动装配的核心是扫描约定目录下的文件进行解析,解析完成之后把得倒的Configuration配置类通过ImportSelector进行导入,从而完成Bean的自动装配。
- 通过@Import(AutoConfigurationImportSelector)实现配置类的导入,导入多个配置类
- AutoConfigurationImportSelector类实现了ImportSelector接口,重写了selectImports,用于实现选择性批量配置类的装配
- 通过Spring提供的SpringFactoriesLoader机制,扫描classpath路径下的META-INF/spring-autoconfigure-metadata.properties,读取需要实现自动装配的配置类
- 通过条件筛选的方式,把不符合条件的配置类移除,最终完成自动装配。
Starter组件的功能:
- 涉及相关组件的Jar包依赖
- 自动实现Bean的装配
- 自动声明并且加载application.properties文件中的属性配置
mvn install:install-file -Dfile=/Users/yinrongjie/Documents/redis-spring-boot-starter/target/redis-spring-boot-starter-0.0.1-SNAPSHOT.jar -DgroupId=com.yinrj -DartifactId=redis-spring-boot-starter -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar
在factories文件中记得要有 starter中不要把启动类进行了打包不要使用spring-boot-maven-plugin插件



