美文网首页
Spring Boot配置生成随机数

Spring Boot配置生成随机数

作者: 尚水杨 | 来源:发表于2020-08-05 18:23 被阅读0次

    Spring Boot 提供的org.springframework.boot.env.RandomValuePropertySource,可以很方便的生成随机数,可以生成integer、long、uuids及string类型的数据

    示例代码

    配置文件

    demo.secret=${random.value}
    demo.number=${random.int}
    demo.bignumber=${random.long}
    demo.uuid=${random.uuid}
    demo.number.less.than.ten=${random.int(10)}
    demo.number.in.range=${random.int[1024,65536]}
    

    java代码

    @Component
    public class DemoCfgRandomValues {
        private Logger logger= LoggerFactory.getLogger(this.getClass());
        @Value("${demo.secret}")
        private String secret;
        @Value("${demo.number}")
        private int number;
        @Value("${demo.bignumber}")
        private long bigNumber;
        @Value("${demo.uuid}")
        private String uuid;
        @Value("${demo.number.less.than.ten}")
        private int number2;
        @Value("${demo.number.in.range}")
        private int number3;
    
        @PostConstruct
        public void init(){
            logger.info("Random demo.secret ===> {}",secret);
            logger.info("Random number ===> {}",number);
            logger.info("Random bigNumber ===> {}",bigNumber);
            logger.info("Random uuid ===> {}",uuid);
            logger.info("Random number2 ===> {}",number2);
            logger.info("Random number3 ===> {}",number3);
        }
    

    运行结果

     Random demo.secret ===> 036c8fc7cf82ed89a623e60d585bfd43
     Random number ===> -139328813
     Random bigNumber ===> 3041635784093814228
     Random uuid ===> ea4cf2d1-a872-4f47-befe-89e79f3078ba
     Random number2 ===> 1
     Random number3 ===> 14996
    

    备注

    random.int*格式的是“前开后闭”原则

    如:random.int(10),则生成10以内的整数,不包括10
    random.int[1024,65536],生成大于等于1024,小于65536的整数。

    random.value的值

    生成的值是MD5加密然后再HEX编码的值,长度为32位。
    可参考下面源代码

    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();
        }
    
          private Object getRandomBytes() {
            byte[] bytes = new byte[32];
            getSource().nextBytes(bytes);
            return DigestUtils.md5DigestAsHex(bytes);
        }
    

    相关文章

      网友评论

          本文标题:Spring Boot配置生成随机数

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