Spring Boot 配置随机数那些小技巧
转载自 Spring Boot 配置随机数那些小技巧
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;
/**
* 微信公众号:Java技术栈
*/
@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 配置随机数那些小技巧相关推荐
- Spring Boot 配置随机数技巧
2019独角兽企业重金招聘Python工程师标准>>> Spring Boot支持在系统加载的时候配置随机数. 添加config/random.properties文件,添加以下内容 ...
- 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项 ...
- java多个数据库数据进行访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码...
之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...
- mysql 多数据源访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码
之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...
- Spring Boot配置Tomcat容器、Jetty容器、Undertow容器
Spring Boot配置Tomcat容器.Jetty容器.Undertow容器 Tomcat.Jetty.Undertow Tomcat概述 Jetty概述 Undertow概述 Spring Bo ...
- Spring Boot配置ssl证书
Spring Boot配置ssl证书 一.申请有权威的SSL证书 在各大云服务商都可以申请到SSL官方证书. 我这里是在阿里云上申请的,申请后下载,解压.如图: 二.用JDK中keytool是一个证书 ...
- spring boot 配置多个Filter过滤器
spring boot 配置Filter过滤器 1.通过 @WebFilter 注解来配置filet过滤器 @Component @WebFilter(urlPatterns = "/2/* ...
- 容器化 Spring Boot 代码的 9 个技巧
目录 一.前言 1.为什么容器化 Spring Boot 应用程序很重要? 2.一个简单的"Hello World"Spring Boot 应用程序 二.容器化 Spring Bo ...
最新文章
- DevExpress 动态换肤
- 终端证书文件批量导入数据库的Python源码
- 学习C语言的理由-别问我为什么,会用C语言,就是NB
- visual studio开启多核编译方法
- 什么是BNF EBNF 巴科斯范式及其扩展 BNF Augmented BNF
- ES6 知识点及常考面试题
- 学校计算机考察内容是什么意思,2019考研计算机复试四项考察内容分析及注意事项...
- C++编译器默默编写并调用哪些函数
- 【代码规范】Google C++开源风格指南
- 跨语言传输调用对象.TXT
- nginx 映射ip端口服务
- 3DMax基础入门教程,命令面板的设置简介以及功能
- 白盒测试:为什么要做白盒测试
- 树的分支交换操作(NNI,SPR,TBR)
- D2D与其他短距离通信技术
- injected stylesheet 导致页面样式异常
- 基于Android的家校互动系统app
- 如何为雷电模拟器安装Burpsuite证书并抓包
- 微软远程控制安卓汉化版
- 解决方案Solution
热门文章
- 7-9 删数问题 (10 分)(思路加详解)
- Java容器的遍历之增强for循环
- 《C++ Primer》14.3.1节练习
- sketch里的ios控件_30个让你眼前一亮的iOS Swift UI控件!
- 单片机课程设计数字心率计_如何选购合适的PH计
- kettle 空字符串 null问题解决
- 【CF1204D】Kirk and a Binary String【结论题】【LIS】
- 牛客挑战赛47 C 条件(Floyd bitset优化)
- 牛客题霸 [删除链表的倒数第n个节点] C++题解/答案
- 牛客题霸 [ 旋转数组的最小数字] C++题解/答案