SpringBoot原理
1. run方法
SpringApplication.run()方法返回的是一个ApplicationContext对象,既然是ApplicationContext,那肯定就是做了IoC容器的初始化操作,只不过增加了一些其他的处理,比如用Watch记录初始化时间、创建上下文、刷新上下文等等。
最主要的还是refreshContext方法,该方法最终会进入到Spring核心初始化方法(refresh())中去。
2. SpringBootApplication注解
该注解是一个组合注解,其中@EnableAutoConfiguration是自动装配的核心注解,该注解使用了@Import注解导入了一个AutoConfigurationImportSelector类,该类会在Spring初始化时自动加载需要被Spring管理的对象。
在Spring容器初始化时,会进入一个BeanFactoryPostProcess后置处理器,执行相关的处理操作。大致流程就是Spring会从spring.factories文件中加载需要被Spring管理的类信息,最终是否需要加载该类还需要通过spring-autoconfigure-metadata.properties配置文件中读取相关的条件注解进行判断。
自动装配时序图如下: