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

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

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

  1. #随机32位MD5字符串

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

  3. #随机int数字

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

  5. #随机long数字

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

  7. #随便uuid

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

  9. #随机10以内的数字

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

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

  12. 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. * 微信公众号:Java技术栈

  6. */

  7. @Component

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

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

  10. public class RandomConfig {

  11.    private String secret;

  12.    private int intNumber;

  13.    private int lessTen;

  14.    private int range;

  15.    private long longNumber;

  16.    private String uuid;

  17.    public String getSecret() {

  18.        return secret;

  19.    }

  20.    public void setSecret(String secret) {

  21.        this.secret = secret;

  22.    }

  23.    public int getIntNumber() {

  24.        return intNumber;

  25.    }

  26.    public void setIntNumber(int intNumber) {

  27.        this.intNumber = intNumber;

  28.    }

  29.    public int getLessTen() {

  30.        return lessTen;

  31.    }

  32.    public void setLessTen(int lessTen) {

  33.        this.lessTen = lessTen;

  34.    }

  35.    public int getRange() {

  36.        return range;

  37.    }

  38.    public void setRange(int range) {

  39.        this.range = range;

  40.    }

  41.    public long getLongNumber() {

  42.        return longNumber;

  43.    }

  44.    public void setLongNumber(long longNumber) {

  45.        this.longNumber = longNumber;

  46.    }

  47.    public String getUuid() {

  48.        return uuid;

  49.    }

  50.    public void setUuid(String uuid) {

  51.        this.uuid = uuid;

  52.    }

  53. }

输出如下:

  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. private Object getRandomValue(String type) {

  5.    if (type.equals("int")) {

  6.        return getSource().nextInt();

  7.    }

  8.    if (type.equals("long")) {

  9.        return getSource().nextLong();

  10.    }

  11.    String range = getRange(type, "int");

  12.    if (range != null) {

  13.        return getNextIntInRange(range);

  14.    }

  15.    range = getRange(type, "long");

  16.    if (range != null) {

  17.        return getNextLongInRange(range);

  18.    }

  19.    if (type.equals("uuid")) {

  20.        return UUID.randomUUID().toString();

  21.    }

  22.    return getRandomBytes();

  23. }

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

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

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

Spring Boot 配置随机数那些小技巧相关推荐

  1. Spring Boot 配置随机数技巧

    2019独角兽企业重金招聘Python工程师标准>>> Spring Boot支持在系统加载的时候配置随机数. 添加config/random.properties文件,添加以下内容 ...

  2. Spring Boot 2.0 配置图文教程第 2 章 Spring Boot 配置## 书信息 demo.book.name=[Spring Boot 2.x Core Action] demo.b

    本章内容 1.自定义属性快速入门 2.外化配置 3.自动配置 4.自定义创建 Starter 组件 摘录:读书是读完这些文字还要好好用心去想想,写书也一样,做任何事也一样 第 2 章 Spring B ...

  3. 详解HTTPS通信流程,使用JDK,openssl,XCA进行证书认证详细操作,Spring Boot配置SSL证书实操

    这里写目录标题 HTTPS SSL 通信流程 HTTPS一般使用的加密与HASH算法如下: 1.JDK JDK中自带keytool工具便携生成SSL证书,其代码参数如下 整合到spring boot项 ...

  4. java多个数据库数据进行访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码...

    之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...

  5. mysql 多数据源访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码

    之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...

  6. Spring Boot配置Tomcat容器、Jetty容器、Undertow容器

    Spring Boot配置Tomcat容器.Jetty容器.Undertow容器 Tomcat.Jetty.Undertow Tomcat概述 Jetty概述 Undertow概述 Spring Bo ...

  7. Spring Boot配置ssl证书

    Spring Boot配置ssl证书 一.申请有权威的SSL证书 在各大云服务商都可以申请到SSL官方证书. 我这里是在阿里云上申请的,申请后下载,解压.如图: 二.用JDK中keytool是一个证书 ...

  8. spring boot 配置多个Filter过滤器

    spring boot 配置Filter过滤器 1.通过 @WebFilter 注解来配置filet过滤器 @Component @WebFilter(urlPatterns = "/2/* ...

  9. 容器化 Spring Boot 代码的 9 个技巧

    目录 一.前言 1.为什么容器化 Spring Boot 应用程序很重要? 2.一个简单的"Hello World"Spring Boot 应用程序 二.容器化 Spring Bo ...

最新文章

  1. DevExpress 动态换肤
  2. 终端证书文件批量导入数据库的Python源码
  3. 学习C语言的理由-别问我为什么,会用C语言,就是NB
  4. visual studio开启多核编译方法
  5. 什么是BNF EBNF 巴科斯范式及其扩展 BNF Augmented BNF
  6. ES6 知识点及常考面试题
  7. 学校计算机考察内容是什么意思,2019考研计算机复试四项考察内容分析及注意事项...
  8. C++编译器默默编写并调用哪些函数
  9. 【代码规范】Google C++开源风格指南
  10. 跨语言传输调用对象.TXT
  11. nginx 映射ip端口服务
  12. 3DMax基础入门教程,命令面板的设置简介以及功能
  13. 白盒测试:为什么要做白盒测试
  14. 树的分支交换操作(NNI,SPR,TBR)
  15. D2D与其他短距离通信技术
  16. injected stylesheet 导致页面样式异常
  17. 基于Android的家校互动系统app
  18. 如何为雷电模拟器安装Burpsuite证书并抓包
  19. 微软远程控制安卓汉化版
  20. 解决方案Solution

热门文章

  1. 7-9 删数问题 (10 分)(思路加详解)
  2. Java容器的遍历之增强for循环
  3. 《C++ Primer》14.3.1节练习
  4. sketch里的ios控件_30个让你眼前一亮的iOS Swift UI控件!
  5. 单片机课程设计数字心率计_如何选购合适的PH计
  6. kettle 空字符串 null问题解决
  7. 【CF1204D】Kirk and a Binary String【结论题】【LIS】
  8. 牛客挑战赛47 C 条件(Floyd bitset优化)
  9. 牛客题霸 [删除链表的倒数第n个节点] C++题解/答案
  10. 牛客题霸 [ 旋转数组的最小数字] C++题解/答案