因为升级 使用springboot2.x java 11 的关系,
根据官方文档和网上其他作者配置的怎么也配置不成功,
最后自己一步一步升级引入依赖,修改增加接口注入来源,最后成功

升级成功后的源码地址 https://github.com/foxiswho/java-spring-boot-uid-generator-baidu
fox.风

部分升级说明

这里的升级,是升级 官方 代码依赖

官方代码地址: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

部分来源:
https://blog.csdn.net/a13794479495/article/details/83541569
https://www.codesheep.cn/2018/10/24/springbt-uid-generator/

springboot2.x 集成百度 uidgenerator相关推荐

  1. springboot2.x 集成百度 ui-dgenerator生成分布式唯一id

    百度的ui-dgenerator也是根据snowflake算法更改的方法,关于snowflake算法不做介绍,不懂的可以百度. snowflake算法有个缺点是:时间回拨问题,官方文档也是抛出异常. ...

  2. SpringBoot2.0集成百度uid-generator唯一ID生成器,支持zk、redis、数据库进行WORKER ID分配

    UidGenerator是百度开源的基于Snowflake算法的唯一ID生成器,使用java语言实现,可在分布式环境下生成单调递增的ID.详情参见: uid-generator 从官网说明或者网上的使 ...

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

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 作者:风.foxwho fo ...

  4. SpringBoot集成百度uid-generator唯一ID生成器

    大家好,我是猿人(猿码天地创始人),今天给码农们或即将成为码农或想成为码农的朋友讲讲SpringBoot集成百度uid-generator唯一ID生成器,现在是深夜23:10分,猿人最擅长熬夜,就是不 ...

  5. Spring Boot 集成百度 Uidgenerator分布式ID生成器

    UidGenerator是Java实现的, 基于Snowflake算法的唯一ID生成器.UidGenerator以组件形式工作在应用项目中, 支持自定义workerId位数和初始化策略, 从而适用于d ...

  6. 分布式全局唯一id实现-2 springCloud-MyBatis-Plus集成百度分布式全局id(uid-generator)

    前言:MyBatis-Plus 集成百度的uid-generator ,实现业务实体在insert 实体时,可以自动获取全局id,完成数据保存: 1 uid-generator 全局id 生成的方式了 ...

  7. 分布式全局唯一id实现-2.1 springCloud-MyBatis-Plus集成百度分布式全局id(uid-generator)--优化版

    前言:在上一篇 springCloud-MyBatis-Plus集成百度分布式全局id, id的生成全部交予程序实现,虽然可以通过集群的方式来提高id 生成服务的高可用性,但是依然需要考虑极端情况,在 ...

  8. Springboot2.0集成阿里云RocketMQ

    介绍 RocketMQ是出自阿里巴巴的一款开源消息中间件,在设计上借鉴了Kafka,2017年成为Apache顶级项目,虽然目前社区无法和Kafka比肩,但其历经多次天猫双十一的考验,其性能和稳定是毋 ...

  9. SpringBoot笔记:SpringBoot2.3集成SpringSession+nginx+redis实现session共享

    文章目录 Spring Session介绍 Redis集成 yml配置 依赖添加 redis存值查看 登录服务器查看redis的值 查询所有"spring:session:"开头的 ...

  10. android百度导航实现,Android 集成百度地图实现设备定位

    Android 集成百度地图实现设备定位 步骤1: 申请android 端SDK : http://lbsyun.baidu.com/ 步骤2: 下载基础版SDK 步骤3: 下载示例程序 步骤4: 开 ...

最新文章

  1. I.MX6 ar1020 SPI device driver hacking
  2. GLSL着色语言学习。橙皮书第一个例子GLSL+OpenTK+F#的实现。
  3. Java实现算法导论中最大公约数欧几里得算法
  4. OllyDbg 使用笔记 (二)
  5. simulink积分模块和微分模块区别
  6. mount: unknown filesystem type 'ntfs'(转载)
  7. python 编辑数学公式_用python编写数学公式
  8. leetcood学习笔记-204-计算质数
  9. 不重复点名抽奖_抽奖新玩法?和平精英蜘蛛异变套装上线 参与十次可获得所有奖励...
  10. 《spring-boot学习》-12-@controller和@RestController的区别?
  11. Python之爬虫(七)正则的基本使用
  12. 几行代码起家到实时音视频一线,6 岁声网计划赴美上市!
  13. Vue-cli3项目案例
  14. 人工智能 (特征数据提取)
  15. 最新北京市生活常用电话一览表
  16. 机器学习算法对比分析
  17. win7计算机图标删除,如何彻底删除Win7右下角操作中心的小白旗图标
  18. FileNotFoundError: [WinError 3] 系统找不到指定的路径。
  19. php phpstudy虚拟域名配置
  20. 小米手机Android内存管理基本情况介绍

热门文章

  1. 2015-02-10
  2. opengl 遇到的基础问题
  3. python画图程序没有图_Python实现画图软件功能方法详解
  4. 拓端tecdat|R语言进行数据结构化转换:Box-Cox变换、“凸规则”变换方法
  5. 操作系统 读者-写者问题
  6. SpringBoot整合quartz的一个例子
  7. 数据结构算法题整理5
  8. Ubuntu 截屏(或截图)
  9. 使用tf.data.Dataset.from_tensor_slices五步加载数据集
  10. 遥感数据集_最新高光谱遥感数据集