每个SpringBoot程序都有一个主入口,也就是main方法,main里面调用SpringApplication.run()启动整个spring-boot程序
createApplicationContext
prepareContext
refreshContext
refreshContext方法
中执行
invokeBeanDefinitionRegistryPostProcessors():解析配置类,生成 beanDefinitions
在refreshContext中会调用AutoConfigurationImportSelector的selectImports方法
该方法所在类需要使用@SpringBootApplication注解
@SpringBootApplication有很多的注解组成,其实归纳就是一个"三体"结构,重要的只有三个Annotation:
@Configuration(@SpringBootConfiguration实质就是一个@Configuration)
@EnableAutoConfiguration
@ComponentScan
EnableAutoConfiguration包括@Import(EnableAutoConfigurationImportSelector.class)
原文:https://www.cnblogs.com/zrzct/p/14286284.html