本文目录
1 Servlet 启动过程方法
/**
* 示例
*
* @author cuixianlong
*/
@Component
public class DemoBean implements ServletContextListener {
/**
* 当Servlet容器启动Web应用时,会执行contextInitialized()方法。
*/
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
// 自定义初始化操作
}
/**
* 当Servlet容器终止Web应用时,会执行contextDestroyed()方法。
*/
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
// 自定义销毁操作
}
}
2 Bean 初始化过程方法
/**
* 示例
*
* @author cuixianlong
*/
@Component
public class DemoBean {
/**
* 当Bean对象初始化完成后,会执行init()方法,常用于执行一些自定义的初始化操作。
*/
@PostConstruct
private void init() {
// 初始化操作
}
/**
* 在Bean对象被销毁前,会执行destroy()方法,常用于处理或释放一些资源。
*/
@PreDestroy
private void destroy() {
// 销毁操作
}
}
3 Spring Boot 启动过程事件
/**
* 示例
*
* @author cuixianlong
*/
@Component
public class DemoBean implements ApplicationListener<ApplicationEvent> {
/**
* 在Spring Boot启动过程中,会在不同阶段发布不同的事件,根据事件类型,可以在不同时机执行相应操作。
*/
@Override
public void onApplicationEvent(ApplicationEvent event) {
/*
* ApplicationContext 初始化完成 或 刷新完成
*/
if (event instanceof ContextRefreshedEvent) {
// 自定义操作
return;
}
/*
* Enviroment 准备完成
* Bean Definition 加载完成
* SpringApplication 启动完成
* 开始接收和处理服务请求
*/
if (event instanceof ApplicationReadyEvent) {
// 自定义操作
return;
}
/*
* SpringApplication 启动失败
*/
if (event instanceof ApplicationFailedEvent) {
// 自定义操作
return;
}
}
}
4 Spring Boot 启动完成方法
/**
* 示例
*
* @author cuixianlong
*/
@Component
@Order(1)
public class DemoBean implements CommandLineRunner {
/**
* Spring已完成启动过程(Bean已完全初始化并注入完成)
*
* @param args 来自main方法参数args
*/
@Override
public void run(String... args) throws Exception {
// 自定义操作
}
}
5 整体执行顺序
<!-- 启动过程 -->
ServletContextListener.contextInitialized [Servlet启动阶段]
Bean.@PostConstruct [初始化Bean阶段]
ApplicationListener.ContextRefreshedEvent
[服务启动:开始处理服务请求]
CommandLineRunner.run
ApplicationListener.ApplicationReadyEvent
<!-- 停止过程 -->
[服务停止]
Bean.@PreDestroy [注销Bean阶段]
ServletContextListener.contextDestroyed [Servlet注销阶段]
6 相关文章
《Spring Boot 学习笔记:图解 Spring MVC 启动顺序》
《Spring Boot 学习笔记:以JSON格式返回对象》