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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

搞定全局ID生成器:SpringBoot2.x 集成百度 uidgenerator

發布時間:2025/3/20 javascript 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 搞定全局ID生成器:SpringBoot2.x 集成百度 uidgenerator 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
點擊上方?好好學java?,選擇?星標?公眾號重磅資訊,干貨,第一時間送達 今日推薦:推薦19個github超牛逼項目!個人原創100W +訪問量博客:點擊前往,查看更多

作者:風.foxwho

foxwho.blog.csdn.net/article/details/90200602

因為升級 使用springboot2.x java 11 的關系,根據官方文檔和網上其他作者配置的怎么也配置不成功,最后自己一步一步升級引入依賴,修改增加接口注入來源,最后成功。

升級成功后的源碼地址

https://github.com/foxiswho/java-spring-boot-uid-generator-baidu

部分升級說明

這里的升級,是升級 官方 代碼依賴

官方代碼地址:https://github.com/baidu/uid-generator

  • 升級spring boot 版本:2.0.7.RELEASE

  • 升級 mybatis,mybatis-spring 版本

  • 升級 mysql-connector-java 版本:8.0.12

  • 升級 junit 版本

創建數據庫存

導入官網數據庫SQL

https://github.com/baidu/uid-generator/blob/master/src/main/scripts/WORKER_NODE.sql

也就是一張表

我這里是在demo庫中,創建了這張表

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;

如果報錯,基本上是時間問題,因為mysql 低版本控制比較嚴格,解決方法有多種方式

方式一:

直接把TIMESTAMP改成DATETIME 即可

方式二:

執行SQL 語句前先執行:

set?sql_mode="NO_ENGINE_SUBSTITUTION";

mysql 配置信息更改

因為升級到8.x ,配置文件部分也要跟著修改

uid-generator 下,測試文件夾下的資源包uid/mysql.properties

以下修改為

mysql.driver=com.mysql.cj.jdbc.Driver

修改完成后,配置好數據庫相關參數,這樣單元測試即可執行成功

案例

計劃將全局生成唯一ID作為一個服務提供者,供其他微服務使用調用

這里創建了一個項目,項目中包含兩個子項目一個是uid-generator官方本身,當然你也可以不需要放到本項目中,直接使用官方的自行打包即可,一個是uid-provider 服務提供者

以下說明的主要是服務提供者

創建 子項目 uid-provider

POM配置文件如下

<?xml?version="1.0"?encoding="UTF-8"?> <project?xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0?http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>java-spring-boot-uid-generator-baidu</artifactId><groupId>com.foxwho.demo</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>uid-provider</artifactId><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><!--for?Mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope><version>8.0.12</version></dependency><!--?druid?--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.16</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version><optional>true</optional></dependency><dependency><groupId>com.foxwho.demo</groupId><artifactId>uid-generator</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies> </project>

復制 mapper

先在uid-provider項目資源包路徑下創建mapper文件夾,然后到官方uid-generator資源包路徑下META-INF/mybatis/mapper/WORKER_NODE.xml 復制WORKER_NODE.xml文件,粘貼到該文件夾mapper內

cache id 配置文件

先在uid-provider項目資源包路徑下創建uid文件夾,然后到官方uid-generator 測試 [注意:這里是測試資源包] 資源包路徑下uid/cached-uid-spring.xml 復制cached-uid-spring.xml文件,粘貼到該文件夾uid內

最后根據需要 配置參數,可以看官方說明

創建 spring boot 啟動入口

主要就是加上注解@MapperScan("com.baidu.fsg.uid")讓mybatis能掃描到Mapper類的包的路徑

package?com.foxwho.demo;import?org.mybatis.spring.annotation.MapperScan; import?org.springframework.boot.autoconfigure.SpringBootApplication; import?org.springframework.boot.builder.SpringApplicationBuilder;@SpringBootApplication @MapperScan("com.baidu.fsg.uid") public?class?ConsumerApplication?{public?static?void?main(String[]?args)?{new?SpringApplicationBuilder(ConsumerApplication.class).run(args);} }

創建配置

package?com.foxwho.demo.config;import?org.springframework.context.annotation.Configuration; import?org.springframework.context.annotation.ImportResource;@Configuration @ImportResource(locations?=?{?"classpath:uid/cached-uid-spring.xml"?}) public?class?UidConfig?{ }

創建服務接口

package?com.foxwho.demo.service;import?com.baidu.fsg.uid.UidGenerator; import?org.springframework.stereotype.Service;import?javax.annotation.Resource;@Service public?class?UidGenService?{@Resource(name?=?"cachedUidGenerator")private?UidGenerator?uidGenerator;public?long?getUid()?{return?uidGenerator.getUID();} }

主要說明一下@Resource(name = "cachedUidGenerator") 以往錯誤都是少了這里,沒有標明注入來源

控制器

package?com.foxwho.demo.controller;import?com.foxwho.demo.service.UidGenService; import?org.springframework.beans.factory.annotation.Autowired; import?org.springframework.web.bind.annotation.GetMapping; import?org.springframework.web.bind.annotation.RestController;@RestController public?class?UidController?{@Autowiredprivate?UidGenService?uidGenService;@GetMapping("/uidGenerator")public?String?UidGenerator()?{return?String.valueOf(uidGenService.getUid());}@GetMapping("/")public?String?index()?{return?"index";} }

項目配置文件

server.port=8080spring.datasource.url=jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.cj.jdbc.Drivermybatis.mapper-locations=classpath:mapper/*.xml mybatis.configuration.map-underscore-to-camel-case=true

啟動項目

從啟動入口,啟動

訪問瀏覽器

http://localhost:8080/uidGenerator

頁面輸出

13128615512260612

推薦文章
  • 2021 最新版 Spring Boot 速記教程

  • 2W 字你全面認識 Nginx

  • 47K Star 的SpringBoot+MyBatis+docker電商項目,附帶超詳細的文檔!

  • 寫博客能月入10K?

  • 一款基于 Spring Boot 的現代化社區(論壇/問答/社交網絡/博客)

更多項目源碼
  • 這或許是最美的Vue+Element開源后臺管理UI

  • 推薦一款高顏值的 Spring Boot 快速開發框架

  • 一款基于 Spring Boot 的現代化社區(論壇/問答/社交網絡/博客)

  • 13K點贊都基于 Vue+Spring 前后端分離管理系統ELAdmin,大愛

  • 想接私活時薪再翻一倍,建議根據這幾個開源的SpringBoot項目

總結

以上是生活随笔為你收集整理的搞定全局ID生成器:SpringBoot2.x 集成百度 uidgenerator的全部內容,希望文章能夠幫你解決所遇到的問題。

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