<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 10213字,需瀏覽 21分鐘

           ·

          2021-04-30 08:46

          點(diǎn)擊上方 好好學(xué)java ,選擇 星標(biāo) 公眾號

          重磅資訊,干貨,第一時間送達(dá)

          今日推薦:推薦19個github超牛逼項目!

          個人原創(chuàng)100W +訪問量博客:點(diǎn)擊前往,查看更多

          作者:風(fēng).foxwho

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

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

          升級成功后的源碼地址

          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 版本

          創(chuàng)建數(shù)據(jù)庫存

          導(dǎo)入官網(wǎng)數(shù)據(jù)庫SQL

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

          也就是一張表

          我這里是在demo庫中,創(chuàng)建了這張表

          DROP TABLE IF EXISTS WORKER_NODE;
          CREATE TABLE WORKER_NODE
          (
          ID BIGINT NOT NULL AUTO_INCREMENT COMMENT 'auto increment id',
          HOST_NAME VARCHAR(64NOT NULL COMMENT 'host name',
          PORT VARCHAR(64NOT 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 低版本控制比較嚴(yán)格,解決方法有多種方式

          方式一:

          直接把TIMESTAMP改成DATETIME 即可

          方式二:

          執(zhí)行SQL 語句前先執(zhí)行:

          set sql_mode="NO_ENGINE_SUBSTITUTION";

          mysql 配置信息更改

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

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

          以下修改為

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

          修改完成后,配置好數(shù)據(jù)庫相關(guān)參數(shù),這樣單元測試即可執(zhí)行成功

          案例

          計劃將全局生成唯一ID作為一個服務(wù)提供者,供其他微服務(wù)使用調(diào)用

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

          以下說明的主要是服務(wù)提供者

          創(chuàng)建 子項目 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>

          復(fù)制 mapper

          先在uid-provider項目資源包路徑下創(chuàng)建mapper文件夾,然后到官方uid-generator資源包路徑下META-INF/mybatis/mapper/WORKER_NODE.xml 復(fù)制WORKER_NODE.xml文件,粘貼到該文件夾mapper內(nèi)

          cache id 配置文件

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

          最后根據(jù)需要 配置參數(shù),可以看官方說明

          創(chuàng)建 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);
              }
          }

          創(chuàng)建配置

          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 {
          }

          創(chuàng)建服務(wù)接口

          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") 以往錯誤都是少了這里,沒有標(biāo)明注入來源

          控制器

          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 {
              @Autowired
              private UidGenService uidGenService;

              @GetMapping("/uidGenerator")
              public String UidGenerator() {
                  return String.valueOf(uidGenService.getUid());
              }

              @GetMapping("/")
              public String index() {
                  return "index";
              }
          }

          項目配置文件

          server.port=8080

          spring.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.Driver

          mybatis.mapper-locations=classpath:mapper/*.xml
          mybatis.configuration.map-underscore-to-camel-case=true

          啟動項目

          從啟動入口,啟動

          訪問瀏覽器

          http://localhost:8080/uidGenerator

          頁面輸出

          13128615512260612

          推薦文章

          更多項目源碼


          瀏覽 25
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  特级欧美久久久 | 一级特黄无码久久 | 三级网站在线播放 | 九九热2 九九亚洲 | 色五月综合婷婷 |