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);
    }
}

4 整体文件目录

UUID的生成,JDK与java-uuid-generator依赖的两种方式(无限速源码下载)

测试结果

1 JDK的uuid

UUID的生成,JDK与java-uuid-generator依赖的两种方式(无限速源码下载)

UUID的生成,JDK与java-uuid-generator依赖的两种方式(无限速源码下载)

2 Generator的UUID

UUID的生成,JDK与java-uuid-generator依赖的两种方式(无限速源码下载)

UUID的生成,JDK与java-uuid-generator依赖的两种方式(无限速源码下载)

总结

  • 看要求使用哪种方式

作为程序员第 66 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha …

UUID的生成,JDK与java-uuid-generator依赖的两种方式(无限速源码下载)

Lyric:从不感疲惫

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
咸柠六的头像 - 鹿快
评论 抢沙发

请登录后发表评论

    暂无评论内容