SpringBootApplication标签是个符合标签,包括compontScan,Configuration,EntableAutoConfiguration
自动装配(AutoConfiguration)
@Configuration 和 @Bean 配个 然后在applicationContext.getBean(".Class")时候去加载所有bean
然后升级成 EnableAutoConfiguration
这是个组合标签里面包括import去动态注入bean import("AutoConfiguration.Class")
有两种动态注入方式
1、selecter(SPI方式) 其实就是加载META-INF/spring.factoires中的类路径
2、DefinitionResiter
1)自动装配还是利用了SpringFactoriesLoader来加载META-INF/spring.factoires文件里所有配置的EnableAutoConfgruation,它会经过exclude和filter等操作,最终确定要装配的类
2) 处理@Configuration的核心还是ConfigurationClassPostProcessor,这个类实现了BeanFactoryPostProcessor, 因此当AbstractApplicationContext执行refresh方法里的invokeBeanFactoryPostProcessors(beanFactory)方法时会执行自动装配