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 最强技术教程

最新文章

  1. js实现右侧的分享效果
  2. hdu4825 字典树 XOR
  3. android studio添加三方jar包
  4. curl常用的5个例子(转)
  5. Vim 中文件目录浏览插件——NERD tree
  6. CSS3 动画触发事件
  7. AppDelegate关于应用程序挂起、复原与终止的代理方法
  8. MFC消息映射的原理:笔记
  9. node-ejs-mongodb结合的项目案例-----引用mongoose和未引用mongoose模块
  10. ElasticSearch常用操作
  11. VB洗牌算法产生随机数组
  12. java 从指定行读文件,执行系统命令
  13. c++中的auto、const auto&
  14. JS中attribute和property的区别
  15. Mysql优化系列--Innodb引擎下mysql自身配置优化-转
  16. 开源项目PullToRefresh详解(二)——PullToRefreshGridView
  17. GitHub上整理的一些工具【转载】
  18. 链接SQLServer数据库 导出csv文件
  19. Runtime 类的使用
  20. coreseek优化

热门文章

  1. WordConut
  2. 解决Windows 10 1803 April 2018 Updatete不能网络共享的问题
  3. spark 算子之RDD
  4. sqlserver 更新通过 select 查询出的结果集
  5. POJ 1655.Balancing Act 树形dp 树的重心
  6. c++沉思录 学习笔记 第六章 句柄(引用计数指针雏形?)
  7. Python3基础知识之日期时间与字符的转换
  8. java多线程系列9 高级同步工具(3) CyclicBarrier
  9. HQL数据查询基础
  10. OKR 与 KPI