UUID的生成,JDK与java-uuid-generator依赖的两种方式(无限速源码下载)
问题背景
因为需要用到唯一的requestId,所以使用唯一的UUID生成requestId
注意事项:
- 默认安装JDK
- 可以使用文中的代码自己创建工程,也可以下载源码参考
UUID生成
方式一(JDK自带方式)
public static String getJdkUUID() {
System.out.println(UUID.randomUUID());
String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
return uuid;
}
方式二(java-uuid-generator依赖方式)
<dependency>
<groupId>com.fasterxml.uuid</groupId>
<artifactId>java-uuid-generator</artifactId>
<version>4.0</version>
</dependency>
public static String getGeneratorUUID(){
// 传入网卡信息,基于时间制作出生成器
TimeBasedGenerator generator = Generators.timeBasedGenerator(EthernetAddress.fromInterface());
UUID uuid = generator.generate();
// 通过计算当前时间戳、随机数和机器MAC地址得到,由于使用了MAC地址,因此这个版本的随机数能够保证全球唯一
//System.out.println(uuid.version()); // 1
//UUID Version 1:基于时间的UUID(全球唯一)
//UUID uuid1 = Generators.timeBasedGenerator().generate();
//UUID Version 3:基于名字的UUID(相关名字重复)
//UUID uuid3 = Generators.nameBasedGenerator().generate("sai");
//UUID Version 4:随机UUID(java自带版本,极小概率重复)
//UUID uuid4 = Generators.randomBasedGenerator().generate();
return uuid.toString().replaceAll("-", "");
}
1 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.yg</groupId>
<artifactId>uuid</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>uuid</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<!-- <scope>test</scope>-->
</dependency>
<dependency>
<groupId>com.fasterxml.uuid</groupId>
<artifactId>java-uuid-generator</artifactId>
<version>4.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
2 UUID工具类
package com.yg.uuid.utils;
import com.fasterxml.uuid.EthernetAddress;
import com.fasterxml.uuid.Generators;
import com.fasterxml.uuid.impl.TimeBasedGenerator;
import java.util.UUID;
/**
* @Author suolong
* @Date 2022/2/13 14:00
* @Version 1.5
*/
public class UUIDUtils {
public static String getJdkUUID() {
System.out.println(UUID.randomUUID());
String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
return uuid;
}
public static String getGeneratorUUID(){
// 传入网卡信息,基于时间制作出生成器
TimeBasedGenerator generator = Generators.timeBasedGenerator(EthernetAddress.fromInterface());
UUID uuid = generator.generate();
// 通过计算当前时间戳、随机数和机器MAC地址得到,由于使用了MAC地址,因此这个版本的随机数能够保证全球唯一
//System.out.println(uuid.version()); // 1
return uuid.toString().replaceAll("-", "");
}
}
3 UUID测试类
package com.yg.uuid.springbootTest;
import com.yg.uuid.utils.UUIDUtils;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
/**
* @Author suolong
* @Date 2022/2/13 14:01
* @Version 1.5
*/
@Slf4j
@SpringBootTest
public class UUIDTest {
@Test
public void JdkUUIDTest() {
String jdkUUID = UUIDUtils.getJdkUUID();
log.info("jdkUUID: {}", jdkUUID);
}
@Test
public void GeneratorUUIDTest(){
String generatorUUID = UUIDUtils.getGeneratorUUID();
log.info("generatorUUID: {}", generatorUUID);
}
}
测试结果
总结
- 看要求使用哪种方式
作为程序员第 66 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha …
Lyric:从不感疲惫
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/110809.html