国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

WebSocketHandlerDecorator的使用方法

2021-10-31 16:16 作者:向上生長之路  | 我要投稿

使用Spring整合WebSocket實時通信技術(shù),在消息處理過程中,如果消息處理的邏輯很多,會造成消息處理類的代碼臃腫,代碼冗長;此時可以借助于Spring為我們提供的WebSocketHandlerDecorator裝飾類,來分離不同的邏輯處理部分,使得代碼清晰起來

參考Spring文檔:https://docs.spring.io/spring-framework/docs/5.3.4/reference/html/web.html#websocket

  • SpringBoot版本 2.4.5

WebSocketHandlerDecorator的用途

  • 降低代碼耦合度

  • 動態(tài)增加類的行為

  • 符合單一職責的設(shè)計原則

  • 符合開閉原則的設(shè)計原則

使用方式

Spring為我們提供的WebSocketHandlerDecorator裝飾者類,是裝飾者模式的實現(xiàn),基于該類,可以用它裝飾一些具有額外行為的消息處理器
舉例~
假如我們通過WebSocket收到的消息需要持久化到數(shù)據(jù)庫中,elasticsearch搜索引擎中,便于后續(xù)業(yè)務流程中用到,這時就可以用WebSocketHandlerDecorator來裝飾之前編寫的消息處理類,不需要修改之前的消息處理類代碼!
以下給出示例代碼,來演示W(wǎng)ebSocketHandlerDecorator的使用過程

1.新建PersistenceToDatabaseWebSocketHandlerDecorator,來處理消息持久化到數(shù)據(jù)庫的邏輯


2.新建PersistenceToElasticsearchWebSocketHandlerDecorator,來處理消息持久化到elasticsearch的邏輯



3.配置裝飾類生效,將消息處理類一層層的傳入構(gòu)造函數(shù)中


運行效果

啟動工程,通過前端代碼發(fā)送消息來測試
完整前端代碼參考:https://github.com/netbuffer/UItest/blob/master/websocket/index.html



觀察后端日志輸出,可以看到我們的裝飾類相應邏輯已經(jīng)運行了


如果后續(xù)不需要將消息寫入數(shù)據(jù)庫或者elasticsearch中,那就可以修改消息處理類的配置部分,將裝飾類刪除,而不需要直接修改原有的消息處理代碼部分



完整測試工程參考:https://github.com/netbuffer/spring-boot-websocket-demo


WebSocketHandlerDecorator的使用方法的評論 (共 條)

分享到微博請遵守國家法律
恩平市| 嘉义县| 资阳市| 衡阳市| 昆山市| 晋城| 招远市| 桦南县| 紫阳县| 乐清市| 隆德县| 泗阳县| 临桂县| 子洲县| 连南| 同江市| 白河县| 万全县| 资溪县| 大方县| 海安县| 弋阳县| 鹤山市| 柯坪县| 井陉县| 敦化市| 河北区| 正蓝旗| 黄浦区| 莱州市| 昭平县| 道孚县| 留坝县| 丹凤县| 垣曲县| 溧水县| 扶余县| 阳泉市| 岳普湖县| 大冶市| 乡宁县|