SpringBoot的运行过程?
通过注解加载一些配置,然后交给SpringApplication.run()启动
SpringApplication.run()做了两件事:new了一个SpringApplication实例,将启动类信息传过去;
调用SpringApplication实例的run方法。
@SpringBootApplication整合了三个注解:
1.@ComponentScan指定扫描路径,默认扫描当前类的包及子包下的所有路径
2.@SpringBootConfiguration->Configuration:java配置类
3.@EnableAutoConfiguration开启自动配置: 借助@Import的支持 ,收集和注册特定场景相关的bean定, 可以将所有符合条件的@Configuration配置都加载到IoC容器 。
1、SpringBoot启动的时候,会构造一个SpringApplication的实例,然后调用这个实例的run方法,在run方法调用之前,也就是构造SpringApplication的时候会进行初始化的工作,初始化的时候会做以下几件事:
判断是否是web程序;找到ApplicationContextInitializer的所有类并初始化;找到ApplicationListener的所有类并初始化;初始化主类mainApplicatioClass。
2、SpringApplication,启动run方法执行的时候会做以下几件事:
(1)构造一个StopWatch计时器,观察SpringApplication的执行 。
(2)获取SpringApplicationRunListeners并封装到SpringApplicationRunListeners中启动,用于监听run方法的执行。
(3)创建并初始化ConfigurableEnvironment(环境配置)。
(4)构造ApplicationContext上下文。
(5)refreshContext 刷新上下文(IOC容器的初始化)
(6)StopWatch计时器停止计时。