精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一個注解實(shí)現(xiàn)接口冪等,這樣才優(yōu)雅!

開發(fā) 前端
本節(jié)內(nèi)容介紹了防重注解@RepeatSubmit的實(shí)現(xiàn)原理,后續(xù)開發(fā)中只需要在非查詢接口中添加這個注解就能保證在一定時間內(nèi)防止重復(fù)提交。

場景

碼猿慢病云管理系統(tǒng)中其實(shí)高并發(fā)的場景不是很多,沒有必要每個接口都去考慮并發(fā)高的場景,比如添加住院患者的這個接口,具體的業(yè)務(wù)代碼就不貼了,業(yè)務(wù)偽代碼如下:

圖片圖片

上述代碼有問題嗎?誰能說有問題?一般情況下是沒什么問題,但是在高并發(fā)的場景下肯定是存在問題,為什么?

因?yàn)橛惺聞?wù)的隔離性,step1這個階段對住院號的校驗(yàn)肯定是存在問題的,在高并發(fā)的場景下無法保證這里的校驗(yàn)一定準(zhǔn)確。

其實(shí)這個接口的并發(fā)并不高,在碼猿慢病云管理系統(tǒng)中一般不會出現(xiàn)這種問題,那么什么時候會出現(xiàn)呢?

醫(yī)院中大部分是內(nèi)網(wǎng)+外網(wǎng),如果由于網(wǎng)絡(luò)的抖動,系統(tǒng)請求響應(yīng)的時間延遲,這樣會導(dǎo)致醫(yī)護(hù)操作時會出現(xiàn)重復(fù)點(diǎn)擊的情況,比如1秒中之內(nèi)由于第一次點(diǎn)添加患者這個按鈕沒反應(yīng),往往護(hù)士都會重復(fù)點(diǎn)擊,這種情況下是會出現(xiàn)問題。

這里我們就暫且不談對單個接口的冪等優(yōu)化了,要想一個方案全局解決這個問題,在碼猿慢病云管理系統(tǒng)中其實(shí)只要保證這種并發(fā)不高的接口在一定時間段內(nèi)保證冪等即可,比如5秒之內(nèi),這樣在5秒之內(nèi)護(hù)士重復(fù)點(diǎn)擊就沒事。

解決方案

在碼猿慢病云管理系統(tǒng)中新增了一個注解:@RepeatSubmit,代碼如下:

圖片圖片

只需要將該注解標(biāo)注在新增、修改、刪除接口上就能保證在默認(rèn)的5秒之內(nèi)接口冪等。

比如新增住院患者這個接口:

圖片圖片

那么原理是什么?其實(shí)很簡單,先來說下原理,再介紹具體的實(shí)現(xiàn):

  1. AOP攔截增強(qiáng)@RepeatSubmit注解
  2. 獲取請求的URL、IP地址、請求參數(shù)
  3. 將請求URL、IP地址、請求參數(shù)以一定形式轉(zhuǎn)為key
  4. 借助Redis的setNx命令將key存入Redis,且設(shè)置失效時間
  5. 如果存入成功則允許訪問,失敗則拋出異常
  6. 全局異常捕獲,輸出指定信息給客戶端

上述6個步驟中其實(shí)只有一點(diǎn)比較難實(shí)現(xiàn)的,其他的都是基本操作,就是獲取這個請求參數(shù),下面將詳細(xì)介紹一下如何獲取這個請求參數(shù)。

獲取請求參數(shù)

對于form-data的入?yún)⒅恍枰{(diào)用HttpServletRequest的API讀取,但是對于@RequestBody標(biāo)注的入?yún)⑹峭ㄟ^IO流讀取數(shù)據(jù),且IO流只能被讀取一次,如果在AOP中讀取了,那么在接口層面的入?yún)⒆x取肯定是有問題,報錯如下:

圖片圖片

解決方案也很簡單,只需要保證IO流能夠多次讀取即可,下面就來介紹一下方案。

這里我們可以利用裝飾者模式對 HttpServletRequest 的功能進(jìn)行增強(qiáng),具體做法也很簡單,我們重新定義一個 HttpServletRequest:

圖片圖片

圖片圖片

這段代碼并不難,很好懂。

首先在構(gòu)造 RepeatedlyRequestWrapper 的時候,就通過 IO 流將數(shù)據(jù)讀取出來并存入到一個 byte 數(shù)組中,然后重寫 getReader 和 getInputStream 方法,在這兩個讀取 IO 流的方法中,都從 byte 數(shù)組中返回 IO 流數(shù)據(jù)出來,這樣就實(shí)現(xiàn)了反復(fù)讀取了。

接下來我們定義一個過濾器,讓這個裝飾后的 Request 生效:

圖片圖片

判斷一下,如果請求數(shù)據(jù)類型是 JSON 的話,就把 HttpServletRequest “偷梁換柱”改為 HttpRequestWrapper,然后讓過濾器繼續(xù)往下走。

這樣就可以配置后就可以在程序中反復(fù)讀取參數(shù)了!

防重注解實(shí)現(xiàn)

解決了參數(shù)讀取的問題,下面就可以輕松實(shí)現(xiàn)這個防重注解了,首先定義注解com.code.ape.codeape.common.security.annotation.RepeatSubmit:

圖片圖片

接下來直接用AOP實(shí)現(xiàn),com.code.ape.codeape.common.security.component.CodeapeRepeatSubmitAspect代碼如下:

圖片圖片

圖片圖片

邏輯很簡單,上述已經(jīng)介紹過完整的流程,這里需要注意的是參數(shù)的讀取,代碼如下:

圖片圖片

其實(shí)就是將request判斷下是否是經(jīng)過過濾器封裝后的HttpRequestWrapper對象,如果是的話則是@RequestBody入?yún)ⅲ苯訌腎O流中讀取。

總結(jié)

本節(jié)內(nèi)容介紹了防重注解@RepeatSubmit的實(shí)現(xiàn)原理,后續(xù)開發(fā)中只需要在非查詢接口中添加這個注解就能保證在一定時間內(nèi)防止重復(fù)提交。

碼猿慢病云管理系統(tǒng)已經(jīng)在星球中陸續(xù)更新,目前更新內(nèi)容如下:

前言
     01 項(xiàng)目架構(gòu)+業(yè)務(wù)介紹
     02 三方組件介紹
     03 服務(wù)端項(xiàng)目部署
     04 前端項(xiàng)目部署
     05 多租戶架構(gòu)設(shè)計(jì)
     06 醫(yī)療系統(tǒng)中的權(quán)限如何設(shè)計(jì)?
     07 項(xiàng)目搭建
     08 關(guān)掉驗(yàn)證碼登錄
     09 開發(fā)平臺自動生成業(yè)務(wù)代碼
認(rèn)證鑒權(quán)
     01 認(rèn)證登錄生成token
     02 token檢驗(yàn)、鑒權(quán)
     03 token有效期設(shè)置
     04 刷新token
     05 檢查token
     06 服務(wù)中如何獲取當(dāng)前登錄用戶信息?
     07 接口對外暴露
     08 接口只允許內(nèi)部調(diào)用怎么處理?
     09 如何實(shí)現(xiàn)token中繼?
     10 當(dāng)前登錄用戶身份信息如何異步傳遞?
     11 科室權(quán)限如何定一個注解自動注入?
     12 一個注解防止接口重復(fù)提交
業(yè)務(wù)
     01 科室管理
     02 醫(yī)院管理
     03 角色管理

責(zé)任編輯:武曉燕 來源: 碼猿技術(shù)專欄
相關(guān)推薦

2025-02-23 08:00:00

冪等性Java開發(fā)

2024-04-07 08:48:13

WebSocket集群MQ

2024-11-08 15:56:36

2022-06-21 14:44:38

接口數(shù)據(jù)脫敏

2024-11-07 10:55:26

2022-06-10 13:03:44

接口重試while

2025-09-22 09:31:34

2024-03-13 15:18:00

接口冪等性高并發(fā)

2021-04-20 10:50:38

Spring Boot代碼Java

2022-04-25 11:26:16

開發(fā)SpringBoot

2022-05-16 10:45:22

Redis接口限流緩存

2023-08-21 08:01:03

2021-01-04 09:12:31

集合變量

2021-01-18 14:34:59

冪等性接口客戶端

2022-12-12 08:14:47

2025-07-25 01:00:00

Redis+接口冪等性

2023-03-07 08:19:16

接口冪等性SpringBoot

2024-06-24 01:00:00

2024-08-29 09:01:39

2025-07-14 00:00:00

接口重試MQTT冪等性
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

国产乱码精品一区二区三区中文| 亚洲色图在线观看| 久久久久久久久久久免费精品| 日韩网站在线免费观看| 黄色片一区二区| 久久综合图片| yellow中文字幕久久| 国产激情视频一区| 国产精品免费一区二区三区都可以| a级大片在线观看| 久久电影天堂| 五月天丁香久久| 中文字幕中文字幕99| 天天干天天色天天| 一区二区免费不卡在线| 亚洲电影av在线| 日本精品一区在线| 黄色综合网址| 亚洲高清在线视频| 亚洲欧洲三级| 日本在线一二三| 国产一区欧美日韩| 国产精品9999| 日本一区二区三区精品| 中文字幕亚洲综合久久五月天色无吗''| 日韩av在线最新| 国产调教打屁股xxxx网站| 欧美日韩激情视频一区二区三区| 激情偷乱视频一区二区三区| 亚洲香蕉在线观看| 国产高潮失禁喷水爽到抽搐| 在线观看av免费| 国产亚洲欧洲997久久综合| 国产精品乱码视频| 国产成人精品无码高潮| 麻豆高清免费国产一区| 欧美中文字幕在线播放| 久久国产精品波多野结衣| 婷婷亚洲最大| 爽爽爽爽爽爽爽成人免费观看| 蜜桃精品成人影片| 国产毛片久久久| 一区二区国产视频| 中文精品一区二区三区| 国产精品天堂| 久久九九国产精品| 免费亚洲精品视频| 黑人精品一区二区三区| 国产成人在线看| 91理论片午午论夜理片久久| 一炮成瘾1v1高h| 日韩电影一二三区| 日韩一区二区精品视频| 东京热无码av男人的天堂| 精品日韩毛片| 亚洲偷欧美偷国内偷| 国产综合精品在线| 欧美一站二站| 日韩在线视频二区| 日本黄色片免费观看| 婷婷伊人综合| 欧美激情按摩在线| 精品成人久久久| 亚洲精品乱码| 国产福利视频一区二区| 波多野结衣在线观看一区| 成人一二三区| 中文字幕亚洲综合久久| 国产传媒免费在线观看| 欧美一区二区| 91黑丝高跟在线| 黄色三级生活片| 日韩欧美中文| 九九热精品视频在线播放| 69精品久久久| 久久高清国产| 国产欧美一区二区三区久久人妖| 国产老妇伦国产熟女老妇视频| 国产精品18久久久久久vr| 国产综合av一区二区三区| 日韩精品系列| 国产精品高清亚洲| 欧洲精品在线播放| 91caoporm在线视频| 国产精品精品国产色婷婷| a级网站在线观看| 国产美女高潮在线观看| 欧美自拍偷拍一区| 中文字幕乱码在线人视频| 亚州av一区| 久久在线精品视频| www成人在线| 久久66热偷产精品| 精品免费国产| 黄色片网站在线| 欧美日韩视频免费播放| 天堂视频免费看| 综合在线影院| 91麻豆精品国产自产在线 | 欧美电影免费看| 欧美一区三区四区| 黄色国产在线观看| 伊人成综合网| 国产ts人妖一区二区三区| 国产女人18毛片水18精| 91丨国产丨九色丨pron| 亚洲AV无码成人精品一区| 欧美男人天堂| 日韩欧美一二三区| 永久免费av无码网站性色av| 黄色亚洲大片免费在线观看| 国产精品私拍pans大尺度在线 | 日韩电影精品| 亚洲毛片在线观看.| 欧美成人aaa片一区国产精品| 久久一区中文字幕| 国产精品日韩二区| 激情影院在线观看| 欧美在线观看视频一区二区三区| jjzz黄色片| 天天插综合网| 国产精品免费久久久久影院| 日韩在线视频第一页| 中文字幕日本不卡| 亚洲精品中文字幕无码蜜桃| 亚洲国产中文在线| 日韩在线视频二区| 波多野结衣电影在线播放| 成人av在线电影| 乱熟女高潮一区二区在线| 三级成人在线| 亚洲欧美制服丝袜| 四虎成人永久免费视频| 不卡高清视频专区| 国产成a人亚洲精v品在线观看| 精品国产亚洲一区二区三区| 久久精视频免费在线久久完整在线看| 人人妻人人爽人人澡人人精品| 99国产精品一区| 国产毛片视频网站| swag国产精品一区二区| 欧美国产欧美亚洲国产日韩mv天天看完整| 一二三四区在线| 国产精品欧美精品| 在线观看免费污视频| 成人1区2区| 亚洲欧美999| 日韩熟女一区二区| 国产色综合一区| chinese少妇国语对白| 久久成人高清| 国产精品成人久久久久| yourporn在线观看中文站| 欧美三级一区二区| 青青青视频在线免费观看| 免费精品视频最新在线| 亚洲精品一区国产精品| 国外成人福利视频| 色婷婷综合成人av| 国产女主播福利| 一区二区三区欧美视频| 国产白袜脚足j棉袜在线观看| 亚洲激情二区| 欧美日本亚洲| 久久国内精品| 欧美超级乱淫片喷水| 亚洲av少妇一区二区在线观看 | 999久久精品| 91国内免费在线视频| 日本中文字幕一区二区有码在线 | 国模精品系列视频| 色av男人的天堂免费在线| 日韩欧美精品免费在线| 亚洲ⅴ国产v天堂a无码二区| 激情都市一区二区| 日本人体一区二区| 国产成人一区| 成人性生交大片免费看视频直播| 污视频网站免费在线观看| 日精品一区二区三区| 色婷婷久久一区二区| 国产麻豆91视频| 亚洲国产色一区| 亚洲一区二区三区蜜桃| 麻豆成人av在线| 久久99久久99精品| 精品视频网站| 96久久精品| 亚洲精品国产精品国产| 中文字幕亚洲天堂| 黑人精品一区二区| 欧美亚洲日本国产| 久久亚洲av午夜福利精品一区| 久久免费视频一区| 亚洲黄色片免费看| 亚洲一区日韩| 大地资源第二页在线观看高清版| 国产成人精品福利| 国产欧美日韩视频| 午夜激情电影在线播放| 久久精品国产96久久久香蕉| 午夜av免费观看| 91麻豆精品国产| 亚洲s码欧洲m码国产av| 一区二区三区四区在线播放 | 久久99视频精品| 精品欧美不卡一区二区在线观看 | 久久综合九色综合欧美狠狠| 日本一区二区三区四区五区六区| 色老板在线视频一区二区| 成人免费激情视频| 欧美舌奴丨vk视频| 欧美精品激情视频| 日本免费视频在线观看| 亚洲地区一二三色| 又色又爽的视频| 91久色porny| 91精品国产高清91久久久久久| 男女男精品网站| 美女福利视频在线| 影音先锋亚洲电影| 伊人再见免费在线观看高清版| 国产欧美日韩免费观看| 精品一区二区三区视频日产| 日韩区欧美区| 92裸体在线视频网站| 91网在线看| 中文字幕自拍vr一区二区三区| 天天影院图片亚洲| 亚洲成人a级网| 亚洲精品久久久久久久久久| 91精品国产入口在线| 亚洲无码精品在线观看| 欧美在线高清视频| 国产免费www| 91精品1区2区| 69av视频在线观看| 欧洲中文字幕精品| 亚洲成人第一网站| 日韩欧美精品网站| 黄瓜视频在线免费观看| 色婷婷亚洲一区二区三区| 日本三级小视频| 狠狠躁天天躁日日躁欧美| 日韩精品成人在线| 精品国产乱码久久久久久婷婷| 久久精品久久精品久久| 亚洲成人在线网站| 91久久国产视频| 精品久久久一区二区| 精品成人av一区二区在线播放| 欧美日韩亚洲精品内裤| 亚洲图片在线视频| 在线观看不卡视频| 亚洲午夜精品久久久| 欧美日韩国产另类一区| 国产免费av观看| 日韩区在线观看| 人妻丰满熟妇av无码区hd| 亚洲国产精品成人av| 午夜av免费观看| 国产一区二区三区四区福利| 四虎久久免费| 欧美日韩国产第一页| а√天堂8资源中文在线| 91po在线观看91精品国产性色| 都市激情亚洲一区| 国产日本欧美视频| 亚洲天堂av资源在线观看| 国产在线欧美日韩| 欧美精品色图| 欧美精品一区二区性色a+v| 国色天香一区二区| 成年人视频网站免费观看| 男女性色大片免费观看一区二区| 国产精品探花在线播放| 成a人片亚洲日本久久| 成人免费无遮挡无码黄漫视频| 国产精品嫩草99a| 青娱乐av在线| 色94色欧美sute亚洲线路一ni| 一卡二卡在线观看| 亚洲第一区第二区| a天堂中文在线| 欧美国产在线视频| 日韩大尺度黄色| 91aaaa| 亚洲福利网站| 公共露出暴露狂另类av| 亚洲综合社区| 三级黄色片免费看| 91免费看`日韩一区二区| 成年人网站在线观看视频| 久久综合色综合88| 永久免费看片视频教学| 亚洲成人激情综合网| 最新在线中文字幕| 狠狠躁夜夜躁人人躁婷婷91| 在线观看亚洲国产| 亚洲精品成人网| h视频在线免费观看| 国产成人av在线播放| 九色精品蝌蚪| 亚欧洲精品在线视频免费观看| 国内精品久久久久久久影视蜜臀| 亚洲精品视频导航| 99国产精品国产精品毛片| 日韩国产第一页| 欧美亚洲综合久久| 亚洲av成人精品一区二区三区在线播放 | 国产精品成人a在线观看| 欧美黑人经典片免费观看| 国产自产高清不卡| 欧美激情视频二区| 欧美日韩国产色| www.蜜臀av.com| 久久久电影免费观看完整版| 日韩免费电影| 国产一区二区久久久| 在线看片不卡| 成人日韩在线视频| 国产视频一区二区三区在线观看 | 亚洲欧美日本国产专区一区| 好吊操视频这里只有精品| 国产精品成人网| 中文字幕视频一区二区| 亚洲欧美资源在线| 婷婷电影在线观看| 精品欧美一区二区精品久久| 韩日欧美一区| 久久av一区二区三| 一区二区三区在线高清| a网站在线观看| 久久久极品av| vam成人资源在线观看| 一道精品一区二区三区 | 成人动漫网站在线观看| 成人免费在线观看av| 日本女优爱爱视频| 久久精品欧美一区二区三区不卡 | 欧美一级xxx| 精品视频在线一区二区| 国产日韩精品电影| 俺要去色综合狠狠| 黄色手机在线视频| 国产精品视频第一区| 中文文字幕一区二区三三| 在线日韩中文字幕| 成人一区视频| 老司机av福利| 国产一区二区精品久久91| 性欧美videos| 亚洲一区二区在线视频| www.国产三级| 欧美极品在线视频| 狼人精品一区二区三区在线 | 蜜桃av一区二区| 人与动物性xxxx| 欧美一区二区三区系列电影| 91小视频xxxx网站在线| 国产精品视频入口| 欧美亚洲自偷自偷| 国产1区2区在线观看| 337p亚洲精品色噜噜噜| 欧洲黄色一区| 美国av一区二区三区| 日av在线不卡| 欧美国产精品一二三| 亚洲国产精久久久久久 | 免费一级欧美片在线播放| a毛片毛片av永久免费| 欧美日韩在线亚洲一区蜜芽| bestiality新另类大全| 黄色国产精品一区二区三区| 久久亚洲欧美| 全网免费在线播放视频入口| 亚洲成人av中文字幕| 亚洲人免费短视频| wwwjizzjizzcom| 91视视频在线观看入口直接观看www| 久久久久久久久久成人| 久久视频在线视频| 欧洲精品一区| 亚洲精品www.| 精品动漫一区二区三区| 91精彩视频在线观看| 国产91精品入口17c| 欧美一站二站| 黑森林av导航| 欧美日韩中文字幕一区二区| 高清电影在线免费观看| 色女孩综合网| 成人午夜电影久久影院| 亚洲午夜无码久久久久| 欧美日韩成人精品| jiujiure精品视频播放| 日本少妇xxxx| 欧美另类一区二区三区| 美女视频在线免费| 在线观看成人免费|