一、spring-boot的自动装配
spi机制加载所有的装配类
从这里的run方法点进去一直点到下图所示的方法中
默认使用 SERVLET 通过反射实例化上下文容器的类:AnnotationConfigServletWebServerApplicationContext ,在这个类的构造方法中加入了许多跟spring实例化流程相关的postprocessor类(这些类中的某些方法会在spring实例化流程中被调用到,跟spring-boot自动装配的postprocessor类有关的实现是ConfigurationClassPostProcessor),并把这些类加入到了BeanDefinition容器中,
在spring-boot启动类上一般会加上@SpringBootApplication注解,在这个注解的@EnableAutoConfiguration注解中有@Import(AutoConfigurationImportSelector.class)
@Import注解中的类会被ConfigurationClassPostProcessor类调用到process()和selectImports()方法 这2个方法用于加载META-INF/spring.factories下适配的key对应的装配类,
然后所有装配类再通过各种的实现根据@condition注解判断是否要装配
matchIfMissing为true时表示默认配置,prefix和name,havingValue就是application中的配置
下图是spring实例化如何调用processor,然后再调用ConfigurationClassPostProcessor,然后再调用到