Spring Boot 是支持在系統加載的時候配置隨機數的
1.添加config/random.properties文件
#隨機32位MD5字符串
user.random.secret=${random.value}
#隨機int數字
user.random.intNumber=${random.int}
#隨機long數字
user.random.longNumber=${random.long}
#隨便uuid
user.random.uuid=${random.uuid}
#隨機10以內的數字
user.random.lessTen=${random.int(10)}
#隨機1024~65536之內的數字
user.random.range=${random.int[1024,65536]}
2.創建類:
mport org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; /** * 隨機數 */ @Component @ConfigurationProperties(prefix = "user.random") @PropertySource(value = { "config/random.properties" }) public class RandomConfig { private String secret; private int intNumber; private int lessTen; private int range; private long longNumber; private String uuid; public String getSecret() { return secret; } public void setSecret(String secret) { this.secret = secret; } public int getIntNumber() { return intNumber; } public void setIntNumber(int intNumber) { this.intNumber = intNumber; } public int getLessTen() { return lessTen; } public void setLessTen(int lessTen) { this.lessTen = lessTen; } public int getRange() { return range; } public void setRange(int range) { this.range = range; } public long getLongNumber() { return longNumber; } public void setLongNumber(long longNumber) { this.longNumber = longNumber; } public String getUuid() { return uuid; } public void setUuid(String uuid) { this.uuid = uuid; } }
具體的生成細節可以參考Spring Boot的配置類:org.springframework.boot.context.config.RandomValuePropertySource
使用了 Java 自帶的 java.util.Random 和 java.util.UUID 等工具類
public RandomValuePropertySource(String name) { super(name, new Random()); } private Object getRandomValue(String type) { if (type.equals("int")) { return getSource().nextInt(); } if (type.equals("long")) { return getSource().nextLong(); } String range = getRange(type, "int"); if (range != null) { return getNextIntInRange(range); } range = getRange(type, "long"); if (range != null) { return getNextLongInRange(range); } if (type.equals("uuid")) { return UUID.randomUUID().toString(); } return getRandomBytes(); }
