如果无法传递 POST 响应,如何回滚事务

2023-12-08

使用 Spring MVC,假设我已经实现了一个控制器,用于处理 POST 请求,在事务内执行数据库操作,并在响应正文中返回结果。

这是控制器和服务层:

@RestController
@RequiredArgsConstructor
public class SomeController {

  private final SomeService someService;

  @PostMapping("/something")
  public SomeResult postSomething(Something something) {
    return someService.handle(something);
  }

}

@Service
@RequiredArgsConstructor
public class SomeService {

  private final SomeRepository someRepository;

  @Transactional
  public SomeResult handle(Something something){
    // changes to the database
  }

}

问题:

假设有人拉网线在服务调用之后,事务就被提交了。

1)如果响应无法传递,Spring会抛出异常吗?

2)如果响应无法送达,是否可以回滚事务?

3)如何确保客户端重试时数据库保持一致? (POST 不是幂等的)。

Thanks!


我将尝试回答你的问题:

1) Maybe。这取决于答案的大小和连接丢失的确切时刻。

如果当 spring 尝试向套接字操作系统写入响应时检测到 TCP/IP 连接已关闭,则会抛出异常。 TCP 协议不包含检测这种情况的内部程序,因此操作系统使用超时等启发式方法。

所以我在这里只看到一种选择。 Spring 尝试将响应写入套接字,但响应太大而无法放入缓冲区。在这种情况下写操作将被阻止。然后一段时间后,它将因超时而中断并引发异常。

我不能100%确定我的答案准确,所以你最好自己检查一下。 我建议你不要依赖这种机制,因为它取决于许多不同的因素,如缓冲区大小、超时和 Spring 实现。

2)Spring的答案将是NO.

3)这取决于你。没有普遍的答案。例如Hibernate可以配置为在对象上使用版本控制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果无法传递 POST 响应,如何回滚事务 的相关文章

随机推荐

  • Android:ScrollView 内的 Listview

    我想要一个可以滚动的布局和其中的列表视图 列表视图将根据其中的项目数量扩展其高度 只有外面的ScrollView是可滚动的 这是我的代码
  • req.user 在 Google Passport 策略中不可用

    我有一个快速应用程序 它通过 Passport 管理身份验证 最初使用本地策略 为此 我刚刚添加了 Google 登录 帐户创建 几乎一切都按照文档进行 我遇到的问题是 用户可以使用 Google 策略创建帐户 但我无法完全理解它 以便经过
  • 如何路由 /About 到 /Home/About

    我刚刚开始使用 ASP NET MVC 这太棒了 但是 我不太明白设置路线 如何将 About 路由到 Home About 视图 主页 About aspx 我希望能够通过以下方式访问它 首页 关于要不就 About 如果你想明确地为其设
  • 预填充 Django 表单

    我试图从查询中获取 Django 表单 但我一直以错误的方式进行操作 检查了几个例子 但我做的有点不同 这是我的代码 Le Form class ItemForm ModelForm class Meta model Item exclud
  • 我可以通过多边形绑定 st_distance 调用吗?

    我看过关于这个主题的类似帖子 例如 here and here 但不是 sf tidyverse 生态系统特有的 I have a series of lakes a series of sample points within each
  • 在 Firebug 中查看 CSS 伪元素

    是否有任何解决方法可以查看 CSS 伪元素 例如 after before等 称为CSS3 生成和替换的内容模块 在萤火虫中 现在 当我选择一个元素时 我只能看到应用于它的静态 CSS 我没有看到使用样式应用于它 after and bef
  • ANSI 颜色集图形渲染在批次中中断并在继续后工作

    我有一个批处理 其中有一个子部分 该子部分迭代 EXE 文件的行以尝试运行 然后该批处理根据 EXE 的退出代码对 EXE 进行排序 由于某种原因 ANSI SGR 在设置前一个图形渲染而不是重新渲染后似乎会破坏或回显文字文本 我回去重新参
  • 如何对 pandas 数据帧上的最大和最小时间戳进行分组

    我想对数据集进行分组并返回最大和最小时间戳 这是我的数据 id timestamp 1 2017 09 17 10 09 01 2 2017 10 02 01 13 15 1 2017 09 17 10 53 07 1 2017 09 17
  • 如何激活全屏控制DOTS(SDK14)

    有人知道我的意思吗 在我的 Galaxy Nexus 上的新相机应用程序的全屏模式下 控制按钮变为 3 个点 我如何以编程方式激活它 您可以使用 getWindow getDecorView setSystemUiVisibility Vi
  • 使用 Jest 模拟命名导入

    我有一个 notifications js 模块 看起来有点像这样 import Notifications Permissions from expo export function setLocalNotification storag
  • 将收集数据从 HTML/Razor 表单发送/发布到 MVC 操作参数模型

    我正在开发一个项目 使用 ASP NET MVC 5 帮助学生和顾问选择下学期的最佳课程 第一步是让学生从列表中选择他已经选修的课程 显示列表的控制器是 public ActionResult AddCourseVM int id Stud
  • 简单的 CSS 动画循环 – 淡入和淡出“正在加载”文本

    如果没有 Javascript 我想制作一个简单的循环 CSS 动画类 可以无限地淡入和淡出文本 我对 CSS 动画了解不多 所以我还没有弄清楚 但这是我已经取得的进展 keyframes flickerAnimation flame pu
  • postgres 中多列的聚合函数

    我有一个 postgresql 表 其中包含多个包含整数的字段 a1 a2 a3 等 我想一次在多个列上运行聚合函数 均值 标准差等 其中一些可能有合理数量的空值 所以我不想只生成列平均值 然后对它们进行平均 我可以得到一组整数 SELEC
  • 我应该如何验证传递到 WCF 服务的参数?

    通常 您使用以下命令检查公共方法中的传入参数if then throw模式或代码合同 我的问题是 我应该如何验证 WCF 服务中传递的参数 例如 我有以下合同 OperationContract Stock GetStock string
  • 在模型 Firebase 上保存 userId

    我有一个与如何使用 firebase 保存用户信息相关的问题 我扩展了用户身份验证 并在 json 树上创建了一个新的用户节点 每个用户都有由 firebase 生成的自己的 id 并且用户信息位于该密钥 id 内 问题是 每次我这样做时
  • 如何在代理后面推送到heroku?

    我在大学的代理服务器后面使用 git 在尝试执行时 git push heroku master 我收到一个错误 ssh connect to host proxy heroku com port 22 Bad file number fa
  • 将 CSV 扫描到变量

    我有一个像这样的 CSV 一行 101 120 130 我怎样才能将它们扫描成这样的变量 pt num 101 x 120 y 130 只需使用csvread M csvread filename csv pt num M 1 x M 2
  • 如何通过查询获取MySQL中的数据库结构?

    是否有可能以某种方式获取 MySQL 数据库的结构 或者只是一些带有简单查询的表 或者还有其他方法吗 我该怎么做 我认为你所追求的是DESCRIBE DESCRIBE table 您还可以使用SHOW TABLES SHOW TABLES
  • 为什么在这种情况下使用泛型会出现 ClassCastException?

    这是代码 一个简单的泛型类并尝试将一个整数分配给aa 0 public class GenericTest
  • 如果无法传递 POST 响应,如何回滚事务

    使用 Spring MVC 假设我已经实现了一个控制器 用于处理 POST 请求 在事务内执行数据库操作 并在响应正文中返回结果 这是控制器和服务层 RestController RequiredArgsConstructor public