2019独角兽企业重金招聘Python工程师标准>>>

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

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

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

推荐:Spring Boot & Cloud 最强技术教程

扫描关注我们的微信公众号,干货每天更新。

转载于:https://my.oschina.net/javaroad/blog/1817141

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

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

    转载自  Spring Boot 配置随机数那些小技巧 Spring Boot支持在系统加载的时候配置随机数. 添加config/random.properties文件,添加以下内容: #随机32位M ...

  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. SpringBoot学习笔记-2:第二章 Spring Boot 配置

    第二章 Spring Boot 配置 1.YAML 配置 SpringBoot 全局配置文件 application.properties application.yml YAML 以数据为中心,比 ...

  5. Spring Boot 配置元数据指南

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | 遗失的拂晓 来源 | 公众号「锅外的大佬」 1. 概览 在编写 Spring Bo ...

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

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

  7. 19年8月 字母哥 第三章 spring boot 配置原理实战 用热点公司网不行

    第三章 spring boot 配置原理实战 3.1.结合配置加载讲解bean自动装配原理 3.2.详解YAML语法及占位符语法 3.3.获取自定义配置的两种实现方法 3.4.配置文件注入值数据校验 ...

  8. 在Spring boot 配置过滤器(filter)

    在spring boot 配置servlet filter 逻辑上与配置spring 是一样的. 不过相比spring 更加简化配置的难度. 这里只需要两步 1 创建一个自定义顾虑器并继承spring ...

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

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

最新文章

  1. 特朗普即将主持AI会议 中美竞争成焦点
  2. TinyXml高速入口(一)
  3. Android Studio在Git上将项目推送到新的Url地址中
  4. 久违的反省,容忍现在的自己
  5. “百变”Redis带你见识不同场景下的产品技术架构
  6. python输出不重复的单词_Python情感分析(比较单词时,不计算文本中重复的单词)...
  7. 理解SharePoint中的备用访问映射(Alternate Access Mapping)
  8. 数据结构与算法之树的遍历
  9. android文件管理器--界面效果二(layout)
  10. Markdown 标记语言指北
  11. 电子罗盘简单介绍和应用
  12. Vue 可拖拽的组件
  13. 二十余岁时的社会观(一)
  14. java文件切割工具
  15. 毕业设计 : 题目:基于深度学习的水果识别 设计 开题 技术
  16. 2022年,程序员如何选择电脑
  17. 测试用例设计——微信发朋友圈(详细)
  18. 基于R语言或Matlab直接读取压缩包中的数据
  19. MATLAB图形绘制--离散数据绘图
  20. N - Sport Mafia(数学)

热门文章

  1. 深度为你解答怎么避免域名被微信拦截,微信域名防封需要注意哪些问题?
  2. HDU 1411--校庆神秘建筑(欧拉四面体体积计算)
  3. python接口自动化(十一)--发送post【data】(详解)
  4. html5 原生 弹窗,HTML5 Popmotion.js实现的弹窗控件
  5. 总线全称_一篇文章讲透I2C总线协议
  6. Java之Normalizer(归一化)
  7. html5 ul下的li重叠解决,html – 如何仅在嵌套的ul中悬停当前的li?
  8. 并发执行linux命令结果混乱,Shell脚本--并发执行
  9. php 判断下载状态,php下载文件显示进度(适用于CLI模式或长连接)
  10. 文件在IDEA中已进行Git的Commit操作,使其从暂存区提交到本地仓库,但是未Push到远程仓库,此时进行Pull操作出现代码冲突