Spring Boot支持在系统加载的时候配置随机数。
添加config/random.properties文件,添加以下内容:
1#随机32位MD5字符串 2user.random.secret=${random.value} 3 4#随机int数字 5user.random.intNumber=${random.int} 6 7#随机long数字 8user.random.longNumber=${random.long} 9 10#随便uuid 11user.random.uuid=${random.uuid} 12 13#随机10以内的数字 14user.random.lessTen=${random.int(10)} 15 16#随机1024~65536之内的数字 17user.random.range=${random.int[1024,65536]}
添加绑定类:
1import org.springframework.boot.context.properties.ConfigurationProperties; 2import org.springframework.context.annotation.PropertySource; 3import org.springframework.stereotype.Component; 4 5@Component 6@ConfigurationProperties(prefix = "user.random") 7@PropertySource(value = { "config/random.properties" }) 8public class RandomConfig { 9 10 private String secret; 11 private int intNumber; 12 private int lessTen; 13 private int range; 14 private long longNumber; 15 private String uuid; 16 17 public String getSecret() { 18 return secret; 19 } 20 21 public void setSecret(String secret) { 22 this.secret = secret; 23 } 24 25 public int getIntNumber() { 26 return intNumber; 27 } 28 29 public void setIntNumber(int intNumber) { 30 this.intNumber = intNumber; 31 } 32 33 public int getLessTen() { 34 return lessTen; 35 } 36 37 public void setLessTen(int lessTen) { 38 this.lessTen = lessTen; 39 } 40 41 public int getRange() { 42 return range; 43 } 44 45 public void setRange(int range) { 46 this.range = range; 47 } 48 49 public long getLongNumber() { 50 return longNumber; 51 } 52 53 public void setLongNumber(long longNumber) { 54 this.longNumber = longNumber; 55 } 56 57 public String getUuid() { 58 return uuid; 59 } 60 61 public void setUuid(String uuid) { 62 this.uuid = uuid; 63 } 64 65}
输出如下:
1secret=83a5c3402ef936a37842dc6de3d1af0f 2intNumber=1816149855 3lessTen=1 4range=37625 5longNumber=8449008776720010146 6uuid=e5bc2091-1599-45b1-abd7-e3721ac77e6b
具体的生成细节可以参考Spring Boot的配置类:
org.springframework.boot.context.config.RandomValuePropertySource
来看下它的源码,实现其实很简单。
1public RandomValuePropertySource(String name) { 2 super(name, new Random()); 3} 4 5private Object getRandomValue(String type) { 6 if (type.equals("int")) { 7 return getSource().nextInt(); 8 } 9 if (type.equals("long")) { 10 return getSource().nextLong(); 11 } 12 String range = getRange(type, "int"); 13 if (range != null) { 14 return getNextIntInRange(range); 15 } 16 range = getRange(type, "long"); 17 if (range != null) { 18 return getNextLongInRange(range); 19 } 20 if (type.equals("uuid")) { 21 return UUID.randomUUID().toString(); 22 } 23 return getRandomBytes(); 24}
其实就是使用了 Java 自带的 java.util.Random 和 java.util.UUID 等工具类,实现很简单,这里就不再详细解析了,大家可以自己去看下这个类的实现。
随机数的生成配置就是这么点了,我知道的是可以随机生成应用程序端口,其他的还真没用到。
@程序猿 你们还知道其他的随机数应用么?
扫描关注我们的微信公众号,干货每天更新。