美文网首页
Spring Boot 配置随机数那些小技巧

Spring Boot 配置随机数那些小技巧

作者: 风的低语 | 来源:发表于2018-07-19 14:57 被阅读16次

    Spring Boot支持在系统加载的时候配置随机数。

    添加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]
    }
    添加绑定类:
    
    import
     org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.PropertySource;
    import org.springframework.stereotype.Component;
    /**
     * 微信公众号:Java技术栈
     */
    @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;    
    }
    }
    输出如下:
    
    secret=83a5c3402ef936a37842dc6de3d1af0f
    intNumber=1816149855
    lessTen=1
    range=37625
    longNumber=8449008776720010146
    uuid=e5bc2091-1599-45b1-abd7-e3721ac77e6b
    具体的生成细节可以参考Spring Boot的配置类:
    
    org.springframework.boot.context.config.RandomValuePropertySource
    
    来看下它的源码,实现其实很简单。
    
    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();
    }
    

    其实就是使用了 Java 自带的 java.util.Random 和 java.util.UUID 等工具类,实现很简单,这里就不再详细解析了,大家可以自己去看下这个类的实现。

    随机数的生成配置就是这么点了,我知道的是可以随机生成应用程序端口,其他的还真没用到。

    相关文章

      网友评论

          本文标题:Spring Boot 配置随机数那些小技巧

          本文链接:https://www.haomeiwen.com/subject/blyipftx.html