如果我们重新启动 Spring Boot 应用程序,正在运行的用户线程发生了啥?
Posted
技术标签:
【中文标题】如果我们重新启动 Spring Boot 应用程序,正在运行的用户线程发生了啥?【英文标题】:If we restart Spring Boot application, what happened to the running user thread?如果我们重新启动 Spring Boot 应用程序,正在运行的用户线程发生了什么? 【发布时间】:2019-11-17 18:08:19 【问题描述】:我有一个问题: 我们将重新启动/重新部署/重新发布 Spring Boot 应用程序。 如果同时有一个线程执行一些业务代码(例如将数据保存到数据库),线程会发生什么? 是不是重启后数据库状态不一致,我们正在处理的请求都失败了,无法补救?
【问题讨论】:
这取决于事务的管理方式,如果事务在业务代码末尾提交所有内容,则所有内容都将被丢弃,如果您提交数据库中的每一位数据,那么您可能会遇到您所描述的情况。 【参考方案1】:如果您重新启动应用程序,所有线程都将丢失,用户输入的数据也会随之丢失。
如果您有 Oracle、mysql、PostgreSQL 等关系数据库,则连接将丢失,事务将回滚。由于 ACID 规则,数据不会处于不一致状态。
【讨论】:
以上是关于如果我们重新启动 Spring Boot 应用程序,正在运行的用户线程发生了啥?的主要内容,如果未能解决你的问题,请参考以下文章
我需要我的 Spring Boot Web 应用程序在 JUnit 中重新启动
以编程方式重新启动 Spring Boot 应用程序/刷新 Spring 上下文