日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

封装一个流水号ID生成器:id-spring-boot-starter

發布時間:2025/1/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 封装一个流水号ID生成器:id-spring-boot-starter 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章轉載自https://www.codesheep.cn/2019/09/04/id-springbt-starter/

概述

ID號生成器(或:全局唯一ID生成器)是服務端系統的基礎設施,而且ID號這個東西基本搞后端開發的程序員天天都要接觸。而關于ID生成的算法現在業界首屈一指的當屬Snowflake雪花算法。

UidGenerator正是百度開源的一款基于Snowflake雪花算法實現的高性能唯一ID生成器。在本號前文中已經詳細使用過UidGenerator,但使用過程還是比較繁雜,還需要自己去引UidGenerator組件的源碼,感覺有點不方便。為此本文基于UidGenerator,再來封裝一套更利于Spring Boot項目使用的ID號生成組件,命名為id-spring-boot-starter,一看名字就知道是開箱即用的。


用法

  • 導入SQL腳本
DROP TABLE IF EXISTS WORKER_NODE; CREATE TABLE WORKER_NODE ( ID BIGINT NOT NULL AUTO_INCREMENT COMMENT 'auto increment id', HOST_NAME VARCHAR(64) NOT NULL COMMENT 'host name', PORT VARCHAR(64) NOT NULL COMMENT 'port', TYPE INT NOT NULL COMMENT 'node type: ACTUAL or CONTAINER', LAUNCH_DATE DATE NOT NULL COMMENT 'launch date', MODIFIED TIMESTAMP NOT NULL COMMENT 'modified time', CREATED TIMESTAMP NOT NULL COMMENT 'created time', PRIMARY KEY(ID) )COMMENT='DB WorkerID Assigner for UID Generator',ENGINE = INNODB;

這一步肯定是省不掉,畢竟UidGenerator需要數據庫支持

  • pom中加入依賴
<dependency><groupId>cn.codesheep</groupId><artifactId>id-spring-boot-starter</artifactId><version>1.0.0</version> </dependency>
  • 配置數據庫連接
url: jdbc:mysql://xxx.xxx.xxx.xxx:3306/demo?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useOldAliasMetadataBehavior=true&connectionCollation=utf8mb4_unicode_ci&rewriteBatchedStatements=true&allowMultiQueries=true username: xxxxxx password: xxxxxx

還是因為UidGenerator需要數據庫支持

  • 修改Spring Boot主類

Spring Boot應用主類上加上mybatis注解即可:

@MapperScan({"com.baidu.fsg.uid.worker.dao"})
  • 代碼使用方式
@RestController public class TestController {@Autowiredprivate UidGenService uidGenService;@GetMapping("/uid")public String genUid() {return String.valueOf("本次生成的唯一ID號為:"+uidGenService.getUid());} }

怎么樣,用法超級簡單吧:

  • 首先用 Autowired的方式引入UidGenService類;
  • 直接調用UidGenService類的getUid()方法即可獲得一個Long型的 ID號
    • 運行效果

    demo源碼在此,需要請自提:

    • https://github.com/hansonwang99/Spring-Boot-In-Action/tree/master/test-id-spring-boot-starter

    id-spring-boot-starter源碼下載

    需要組件id-spring-boot-starter源碼進行自定制的,可以去github上自行下載源代碼,地址在此:

    • https://github.com/hansonwang99/Spring-Boot-In-Action/tree/master/id-spring-boot-starter

    幾個注意點:

    • 由于UidGenerator需要數據庫支持,因此使用前一定要導數據表,并且要配置MapperScan
    • 需要高度定制UidGenerator組件詳情的,可以自行修改id-spring-boot-starter內部的cached-uid-spring.xml文件,然后重新打jar包
    • 由于ID號生成一般屬于系統基礎服務,因此可以獨立成一個微服務,供其他微服務調用

    總結

    以上是生活随笔為你收集整理的封装一个流水号ID生成器:id-spring-boot-starter的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。