Spring Boot 配置随机数技巧
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.Random
和 java.util.UUID
等工具类,实现很简单,这里就不再详细解析了,大家可以自己去看下这个类的实现。
随机数的生成配置就是这么点了,我知道的是可以随机生成应用程序端口,其他的还真没用到。
@程序猿 你们还知道其他的随机数应用么?
推荐:Spring Boot & Cloud 最强技术教程
扫描关注我们的微信公众号,干货每天更新。
转载于:https://my.oschina.net/javaroad/blog/1817141
Spring Boot 配置随机数技巧相关推荐
- Spring Boot 配置随机数那些小技巧
转载自 Spring Boot 配置随机数那些小技巧 Spring Boot支持在系统加载的时候配置随机数. 添加config/random.properties文件,添加以下内容: #随机32位M ...
- 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 ...
- 详解HTTPS通信流程,使用JDK,openssl,XCA进行证书认证详细操作,Spring Boot配置SSL证书实操
这里写目录标题 HTTPS SSL 通信流程 HTTPS一般使用的加密与HASH算法如下: 1.JDK JDK中自带keytool工具便携生成SSL证书,其代码参数如下 整合到spring boot项 ...
- SpringBoot学习笔记-2:第二章 Spring Boot 配置
第二章 Spring Boot 配置 1.YAML 配置 SpringBoot 全局配置文件 application.properties application.yml YAML 以数据为中心,比 ...
- Spring Boot 配置元数据指南
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | 遗失的拂晓 来源 | 公众号「锅外的大佬」 1. 概览 在编写 Spring Bo ...
- java多个数据库数据进行访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码...
之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...
- 19年8月 字母哥 第三章 spring boot 配置原理实战 用热点公司网不行
第三章 spring boot 配置原理实战 3.1.结合配置加载讲解bean自动装配原理 3.2.详解YAML语法及占位符语法 3.3.获取自定义配置的两种实现方法 3.4.配置文件注入值数据校验 ...
- 在Spring boot 配置过滤器(filter)
在spring boot 配置servlet filter 逻辑上与配置spring 是一样的. 不过相比spring 更加简化配置的难度. 这里只需要两步 1 创建一个自定义顾虑器并继承spring ...
- mysql 多数据源访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码
之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...
最新文章
- 特朗普即将主持AI会议 中美竞争成焦点
- TinyXml高速入口(一)
- Android Studio在Git上将项目推送到新的Url地址中
- 久违的反省,容忍现在的自己
- “百变”Redis带你见识不同场景下的产品技术架构
- python输出不重复的单词_Python情感分析(比较单词时,不计算文本中重复的单词)...
- 理解SharePoint中的备用访问映射(Alternate Access Mapping)
- 数据结构与算法之树的遍历
- android文件管理器--界面效果二(layout)
- Markdown 标记语言指北
- 电子罗盘简单介绍和应用
- Vue 可拖拽的组件
- 二十余岁时的社会观(一)
- java文件切割工具
- 毕业设计 : 题目:基于深度学习的水果识别 设计 开题 技术
- 2022年,程序员如何选择电脑
- 测试用例设计——微信发朋友圈(详细)
- 基于R语言或Matlab直接读取压缩包中的数据
- MATLAB图形绘制--离散数据绘图
- N - Sport Mafia(数学)
热门文章
- 深度为你解答怎么避免域名被微信拦截,微信域名防封需要注意哪些问题?
- HDU 1411--校庆神秘建筑(欧拉四面体体积计算)
- python接口自动化(十一)--发送post【data】(详解)
- html5 原生 弹窗,HTML5 Popmotion.js实现的弹窗控件
- 总线全称_一篇文章讲透I2C总线协议
- Java之Normalizer(归一化)
- html5 ul下的li重叠解决,html – 如何仅在嵌套的ul中悬停当前的li?
- 并发执行linux命令结果混乱,Shell脚本--并发执行
- php 判断下载状态,php下载文件显示进度(适用于CLI模式或长连接)
- 文件在IDEA中已进行Git的Commit操作,使其从暂存区提交到本地仓库,但是未Push到远程仓库,此时进行Pull操作出现代码冲突