java idgenerator_GitHub - wangjianye/java-spring-boot-uid-generator-baidu: spring-boot 百度uid-generat...

java-spring-boot-uid-generator-baidu

spring-boot 百度uid-generator 百度的唯一ID生成器

百度uid-generator

说明

升级spring boot 版本: 2.0.7.RELEASE

升级 mybatis,mybatis-spring 版本

升级 mysql-connector-java 版本:8.0.12

升级 junit 版本

案例

启动入口

uid-provider 中的 ConsumerApplication

浏览器

http://localhost:8080/uidGenerator

文档说明

部分升级说明

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

升级spring boot 版本: 2.0.7.RELEASE

升级 mybatis,mybatis-spring 版本

升级 mysql-connector-java 版本:8.0.12

升级 junit 版本

创建数据库存

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配置文件如下

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">

java-spring-boot-uid-generator-baidu

com.foxwho.demo

1.0-SNAPSHOT

4.0.0

uid-provider

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-test

test

org.mybatis.spring.boot

mybatis-spring-boot-starter

1.3.2

mysql

mysql-connector-java

runtime

8.0.12

com.alibaba

druid-spring-boot-starter

1.1.16

org.projectlombok

lombok

${lombok.version}

true

com.foxwho.demo

uid-generator

1.0-SNAPSHOT

复制 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 {

@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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值