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

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

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

添加config/random.properties文件,添加以下内容:

  1. #随机32位MD5字符串

  2. user.random.secret=${random.value}

  3.  

  4. #随机int数字

  5. user.random.intNumber=${random.int}

  6.  

  7. #随机long数字

  8. user.random.longNumber=${random.long}

  9.  

  10. #随便uuid

  11. user.random.uuid=${random.uuid}

  12.  

  13. #随机10以内的数字

  14. user.random.lessTen=${random.int(10)}

  15.  

  16. #随机1024~65536之内的数字

  17. user.random.range=${random.int[1024,65536]}

添加绑定类:

  1. import org.springframework.boot.context.properties.ConfigurationProperties;

  2. import org.springframework.context.annotation.PropertySource;

  3. import org.springframework.stereotype.Component;

  4.  

  5. /**

  6. * 微信公众号:Java技术栈

  7. */

  8. @Component

  9. @ConfigurationProperties(prefix = "user.random")

  10. @PropertySource(value = { "config/random.properties" })

  11. public class RandomConfig {

  12.  

  13.    private String secret;

  14.    private int intNumber;

  15.    private int lessTen;

  16.    private int range;

  17.    private long longNumber;

  18.    private String uuid;

  19.  

  20.    public String getSecret() {

  21.        return secret;

  22.    }

  23.  

  24.    public void setSecret(String secret) {

  25.        this.secret = secret;

  26.    }

  27.  

  28.    public int getIntNumber() {

  29.        return intNumber;

  30.    }

  31.  

  32.    public void setIntNumber(int intNumber) {

  33.        this.intNumber = intNumber;

  34.    }

  35.  

  36.    public int getLessTen() {

  37.        return lessTen;

  38.    }

  39.  

  40.    public void setLessTen(int lessTen) {

  41.        this.lessTen = lessTen;

  42.    }

  43.  

  44.    public int getRange() {

  45.        return range;

  46.    }

  47.  

  48.    public void setRange(int range) {

  49.        this.range = range;

  50.    }

  51.  

  52.    public long getLongNumber() {

  53.        return longNumber;

  54.    }

  55.  

  56.    public void setLongNumber(long longNumber) {

  57.        this.longNumber = longNumber;

  58.    }

  59.  

  60.    public String getUuid() {

  61.        return uuid;

  62.    }

  63.  

  64.    public void setUuid(String uuid) {

  65.        this.uuid = uuid;

  66.    }

  67.  

  68. }

输出如下:

  1. secret=83a5c3402ef936a37842dc6de3d1af0f

  2. intNumber=1816149855

  3. lessTen=1

  4. range=37625

  5. longNumber=8449008776720010146

  6. uuid=e5bc2091-1599-45b1-abd7-e3721ac77e6b

具体的生成细节可以参考Spring Boot的配置类:

org.springframework.boot.context.config.RandomValuePropertySource

来看下它的源码,实现其实很简单。

  1. public RandomValuePropertySource(String name) {

  2.    super(name, new Random());

  3. }

  4.  

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327267.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA数组的3种赋值方式

基本数据类型数组的3种赋值方式 第一种赋值方式 int[] arr {1,2,3};第二种赋值方式 int[] arr2 new int[]{1,2,3};第三种赋值方式 int[] arr3 new int[3]; arr3[0] 1; arr3[1] 2; arr3[2] 3;

.NET Core 2.0版本预计于2017年春季发布

微软项目经理Immo Landwerth公布了即将推出的.NET Core 2.0版本的细节,该版本预计于2017年春季发布。这是.NET Core平台的一个重要发布,因为2.0版本对.NET Core的各项功能都有显著扩展。 言归正传,我们来看看即将发布的.NET Core 1.0版本。按…

我是一棵“树”

转载自 我是一棵“树” 我是一颗树,之前我们数据结构家族中的一个小朋友——“栈” 已经给你们介绍过的我们这个家族了(我是一个“栈”)。之所以叫栈为小朋友,是因为我和他的爸爸——数组是平辈的。 之所以存在我们这样一个家庭&…

pycharm前进、后退快捷键

https://blog.csdn.net/jamieblue1/article/details/89087064 pycharm前进、后退快捷键 jamieblue1 2019-04-08 13:45:17 13663 收藏 4 分类专栏: 其他 文章标签: python pycharm 版权 前进/回退到上一个操作的地方win: 后退 ctrlalt&l…

mvc.net分页查询案例——实体层(HouseModel.cs)

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.ComponentModel;namespace HouseSys.Models {[Serializable]public class HouseModel{[DisplayName("房屋编号")]public int HouseId { get; set; }[DisplayNam…

判断字符串相等能否用==

为什么呢? 是因为比较的是两个对象的内存地址,我们知道变量被创建的时候就相当于在内存中开辟空间,而案例中str和str1就是占用的两块不同的空间,所以他们的内存地址是不一致的,在用符号判断的时候就不相等了&#xff0…

初识分布式系统

转载自 初识分布式系统 随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站的高可用架构,不…

数据库 wifi探针数据量太大了

https://www.cnblogs.com/showcase/p/11654045.html https://www.cnblogs.com/showcase/p/11654045.html 橱窗外的小孩 在完成任务的同时,还需要不断“复盘”,不论你多么的忙,都需要留下时间思考,可以思考哪些地方做的好&#x…

CoreCLR源码探索(一) Object是什么

.Net程序员们每天都在和Object在打交道如果你问一个.Net程序员什么是Object,他可能会信誓旦旦的告诉你"Object还不简单吗,就是所有类型的基类"这个答案是对的,但是不足以说明Object真正是什么 在这篇文章我们将会通过阅读CoreCLR的…

分布式的CAP理论

转载自 分布式的CAP理论 CAP理论概述 2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想。2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了CAP。之后,CAP理论正式成为分布式计算领域的公认定理。 一…

使用navicat 复制 数据库 使用mysql5.7 utf8mb4 utf8mb4_general_ci 爬虫的时候就支持表情包了

使用mysql5.7 utf8mb4 utf8mb4_general_ci 爬虫的时候就支持表情包了 mysql8.0差别有点大 将python_spider 完整的复制到python_spider_copy上面 1.右键选中python_spider 选择数据传输 默认传输所有表,你可以进行选择 工具里面的数据…

设计爬虫Hawk背后的故事

本文写于圣诞节北京下午慵懒的午后。本文偏技术向,不过应该大部分人能看懂。 五年之痒 2016年,能记入个人年终总结的事情没几件,其中一个便是开源了Hawk。我花不少时间优化和推广它,得到的评价还算比较正面,因为负面评…

分布式系统的BASE理论

转载自 分布式系统的BASE理论 BASE理论 eBay的架构师Dan Pritchett源于对大规模分布式系统的实践总结,在ACM上发表文章提出BASE理论,BASE理论是对CAP理论的延伸,核心思想是即使无法做到强一致性(Strong Consistency,CA…

wrapper 并集如何使用

https://blog.csdn.net/u011229848/article/details/81902398 MybatisPlus QueryWrapper and or 连用 cnsu-cmh 2018-08-21 10:08:03 96287 收藏 26 分类专栏: MybatisPlus 文章标签: MybatisPlus and or 连用 QueryWrapper and 版权 QueryWrapper&l…

用quot;hosting.jsonquot;配置ASP.NET Core站点的Hosting环境

通常我们在 Prgram.cs 中使用硬编码的方式配置 ASP.NET Core 站点的 Hosting 环境,最常用的就是 .UseUrls() 。 public class Program { public static void Main(string[] args){ var host new WebHostBuilder() .UseUrls("http://*:5000"…