、SpringBoot生命周期
SpringBoot应用的生命周期,整体上可以分为SpringApplication初始化阶段、SpringApplication运行阶段、SpringApplication结束阶段、SpringBoot应用退出四个阶段。
1.1、SpringApplication初始化阶段
SpringApplication初始化阶段可以分为SpringApplication构造阶段和SpringApplication配置阶段。初始化阶段以发布ApplicationStartingEvent事件为止。
SpringApplication构造阶段
通过SpringApplication构造方法或SpringApplicationBuilder构建SpringApplication对象的过程可以归纳为构造阶段。
SpringApplication配置阶段
SpringApplication对象创建之后,调用set或相关属性设置方法的操作可以归纳为配置阶段。
1.2、SpringApplication运行阶段
SpringApplication运行阶段又可以划分为SpringApplication准备阶段、ApplicationContext启动阶段(refreshContext)、ApplicationContext启动后阶段,以发布ApplicationStartedEvent事件为止。
1.3、SpringApplication结束阶段
从发布ApplicationStartedEvent事件(不含)开始到发布发布ApplicationReadyEvent事件或ApplicationFailedEvent为止。
1.4、SpringBoot应用退出阶段
从关闭应用上下文到调用SpringApplication#exit或SpringApplication#handlerFailure或抛出异常错误为止。
SpringBoot中可以监听到Spring的事件,但事件源不同,SpringBoot中的事件源是SpringAppication对象,而Spring中的事件源则是具体的ApplicationContext对象。
在Spring中,自定义事件监听器,一般可以通过实现ApplicationListener接口或注解@EventListener,然后注册为bean来实现对Spring的全生命周期事件的监听。
在SpringBoot中,由于实现原理导致,使用注解@EventListener方式只能监听SpringBoot的部分生命周期事件;可以通过实现ApplicationListener接口,然后为SpringApplication对象添加或设置监听器,或使用Spring的扩展机制在META-INF/spring.factories中配置监听器的方式来实现对SpringBoot的全生命周期事件的监听。
1、初始化环境变量
2、初始化环境变量完成
3、应用启动
4、应用已启动完成
5、应用刷新
6、应用停止
7、应用关闭