位置:org.springframework.util
�实现接口:org.springframework.util.IdGenerator
继承类:无
作用:生成随机唯一标识码
一、效果
在系统内生成随机的、密码安全的、唯一的UUID
如:b66049ca-04a9-b53f-8bb2-7a18e8835224
二、API
/**AlternativeJdkIdGenerator对象初始化无参构造中时生成随机种子利用随机种子生成随机16位字节数组对数组前后各八个字节进行位运算,获得高低两个64位数,并作为上下界参数生成UUID使用示例:AlternativeJdkIdGenerator generator = new AlternativeJdkIdGenerator();UUID uuid = generator.generateId();System.out.println(uuid); >>> b66049ca-04a9-b53f-8bb2-7a18e8835224*/public UUID generateId() {byte[] randomBytes = new byte[16];this.random.nextBytes(randomBytes);long mostSigBits = 0;for (int i = 0; i < 8; i++) {mostSigBits = (mostSigBits << 8) | (randomBytes[i] & 0xff);}long leastSigBits = 0;for (int i = 8; i < 16; i++) {leastSigBits = (leastSigBits << 8) | (randomBytes[i] & 0xff);}return new UUID(mostSigBits, leastSigBits);}
三、总结
使用SecureRandom作为初始种子,此后使用Random,而不是像JdkIdGenerator那样每次都调用UUID.randomUUID()。该生成方式在安全的随机ID和性能之间取得更好的平衡。
四、补充
相关资料参考: Random & SecureRandom 原理分析
