1. 讲讲springboot的自动装配原理吧
- 什么是自动装配?
🌘就是我们不用手动的去写xml配置文件,在启动一个spring boot项目的时候,配置文件已经被自动加载。
- 现在来说说自动装配的原理(如果没耐心直接跳到第四步去看,如果超级没耐心直接看总结)
1️⃣首先进入spring boot的启动类中你会发现一个叫@SpringBootApplication的复合注解。
2️⃣进入这个复合注解你会发现,这个复合注解是由三个注解组合而成
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
3️⃣我们重点关注这个@EnableAutoConfiguration注解,点进去看看。
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
4️⃣@Import(AutoConfigurationImportSelector.class)这个注解是我们要关注的一个重点,spring boot的自动装配就是这个AutoConfigurationImportSelector类,这个selector类会自动去META-INF下面的spring.factories文件中去找到对应的start启动类的全限定类名,然后通过这个反射把对应的类给加载出来,然后注入到IOC容器里面。
🏷总结:spring boot的自动装配说的挺玄乎,其实也就通过一个selector类找到每个类对应的一个全限定类名,然后通过反射把这个类加载到IOC容器里面去就行了。