当前位置:首页 > 问答库 > Java基础知识 > 详情

开发必懂|Spring-retry 框架的底层原理详解

来源:千锋教育

发布:syq

2022-10-25

Java基础知识 分类问答库

推荐答案

  一. 问题

  近日有学生问小编,应该怎样理解【阿里巴巴开发规约中提到的乐观锁至少要重试三次】的规定,为了让大家更好的理解这一点,先来引用一下阿里巴巴开发规约中的相关规定。

Spring-retry 框架的底层原理

  【强制】并发修改同一记录时,避免更新丢失,需要加锁。要么在应用层加锁,要么在缓存加锁,要么在数据库层使用乐观锁,使用 version 作为更新依据。

  说明:如果每次访问冲突概率小于 20%,推荐使用乐观锁,否则使用悲观锁。乐观锁的重试次数不得小于 3 次。

  二. 解答

  对于这个问题,小编是这么认为的。【乐观锁采用CAS机制,在事务的最后才会根据version来判断事务是否能够提交成功。很多时候,仅仅只是因为其他的事务快一步更新了version,就导致整个事务提交失败,这样给用户的体验并不好,所以咱们要在这里让事务重试几次,提升用户的使用体验】。

  其实重试的方式有很多,今天来给大家介绍一款Spring自带的重试框架 【spring-retry】

  三. spring-retry 框架介绍

  3.1 spring-retry框架是什么

  spring-retry是spring提供的一个重试框架,它通过几个注解就可以优雅的实现重试的功能。

  3.2 怎样使用spring-retry框架

  导入依赖

31

  在主程序能够扫描到的类上,或者直接在主程序上添加@EnableRetry注解,开启重试

32

  在有可能需要重试的方法上添加注解

33

  如果最大重试次数也重试完了,但还是失败的话,添加我们将要执行的逻辑

34

  四. 小结

  到此,细心的同学应该已经能发现,spring-retry这个框架的底层原理其实就是aop的异常增强。当方法中抛出指定类型异常的时候,我们就给予一定次数的重试。

  另外,重试的业务场景也不一定就局限在乐观锁上面,其他很多业务场景也需要使用到重试。

  比如说:

  由于网络波动或者系统太忙,造成远程调用失败需要重试;

  秒杀时使用分布式锁时,当一个事务锁住商品,导致其他的购买请求不能正常进行时也需要重试。

更多问题在线答疑

导师线上坐镇
解答个性化学习难题

立即提问

上一篇

实战应用|在ElasticSearch中有哪些”大坑“需要避免

下一篇

利用Java实现的图片中文字识别,你学会了吗?

相关问题

更多 >>
请求转发与重定向,傻傻分不清?看这篇文章试试 什么Maven?项目为什么选用maven进行构建? 处理大文件排序的方式--外部排序 HashMap和HashTable有什么区别? hashcode是什么?有什么作用? ArrayList和LinkedList的区别?分别用在什么场景
热门问题
Java基础知识 Java培训机构 Java培训费用 Java培训时间 java培训课程 Java培训就业 零基础学Java java薪资待遇 java学习路线

全国咨询热线400-811-9990