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

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

作者: java面试笔试 | 来源:发表于2018-08-15 12:29 被阅读1次

    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等工具类,实现很简单,这里就不再详细解析了,大家可以自己去看下这个类的实现。

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

    @程序猿 你们还知道其他的随机数应用么?

    来源:https://blog.csdn.net/youanyyou/article/details/78993048

    公众号:javafirst

    相关文章

      网友评论

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

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