spring-boot - 在 Spring 框架中使用 timeout 属性有什么好处?
问题描述
当我阅读有关事务的本timeout
教程时,我注意到了我以前从未在我开发的任何 REST 服务中使用过的属性。
例如,在这段代码中:
@Service
@Transactional(
isolation = Isolation.READ_COMMITTED,
propagation = Propagation.SUPPORTS,
readOnly = false,
timeout = 30)
public class CarService {
@Autowired
private CarRepository carRepository;
@Transactional(
rollbackFor = IllegalArgumentException.class,
noRollbackFor = EntityExistsException.class,
rollbackForClassName = "IllegalArgumentException",
noRollbackForClassName = "EntityExistsException")
public Car save(Car car) {
return carRepository.save(car);
}
}
timeout
使用财产有什么好处或优势?使用它是一个好习惯吗?谁能告诉我超时属性的用例?
解决方案
正如Spring Docs所解释的:
超时使客户端能够控制事务在超时和被底层事务基础设施自动回滚之前运行多长时间。
因此,好处是显而易见的——控制事务(及其下的查询)可能持续多长时间,直到它们被回滚。
问:为什么控制交易时间是有用的/好的?
A:如果您故意期望您的交易不会花费太长时间 - 现在是使用此配置的好时机;如果您预计您的事务可能需要比其
default
最大时间更长的时间,那么提供此配置很有帮助。
推荐阅读
- php - 未捕获的 Twig_Error_Loader:找不到模板“pb/.twig”
- c# - 如何检查字符串是否包含 EpiFind 中的值?
- windows - % Processor Time 的单位是什么,它表示什么?
- command - 由命令触发的 Minecraft 事件处理程序
- mongodb - 使用空手道自动测试 MongoDB 的正确方法
- java - Hibernate 在使用查询缓存时执行 N+1 个选择而不是 1 个查询
- mysql - Sequelize findAll 不是函数 4
- r - 根据其他列中的值,在数据框中创建具有升序值的新列
- assembly - 如何从程序集调用 cobol 程序 (z/os IBM)
- amazon-web-services - 错误管道步骤“无服务器部署”显示“IamRoleLambdaExecution - 角色 XXXXX 的最大策略大小超过 10240 字节”