spring boot 配置随机数那些小技

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

1.添加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]}

2.创建类:

mport 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;
   }
}

具体的生成细节可以参考Spring Boot的配置类:org .springframework .boot .context .config .RandomValuePropertySource

使用了 Java 自带的 java.util.Random 和 java.util.UUID 等工具类

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();
}

Original: https://www.cnblogs.com/qinxu/p/14201933.html
Author: 【cosmo】
Title: spring boot 配置随机数那些小技

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/540415/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 安装typescript环境并开启VSCode自动监视编译ts文件为js文件

    一、前言 小编最近开始学习 typescript,懂得人都知道, typescript是 vue3的基础伴生,配合更加默契。就像 vue2和 js一样! typescript不像j…

    Java 2023年6月15日
    083
  • 从 KeyStore 中获取 PublicKey 和 PrivateKey

    KeyStore(译:密钥存储库) 代表用于加密密钥和证书的存储设施。 KeyStore 管理不同类型的 entry(译:条目)。每种类型的 entry 都实现了 KeyStore…

    Java 2023年6月7日
    082
  • 如何从0到1设计一个类Dubbo的RPC框架

    之前分享了如何从0到1设计一个MQ消息队列,今天谈谈”如何从0到1设计一个Dubbo的RPC框架”,重点考验: 你对RPC框架的底层原理掌握程度。 以及考验…

    Java 2023年6月15日
    070
  • springboot引入三方jar包打包报错问题解决

    (1)jar包放项目中(如下图) (2)修改依赖配置 加入: <dependency> <groupId>cn.newhopegroupId> &lt…

    Java 2023年5月30日
    0102
  • Java学习之Filter与Listener

    web中的Filiter:当客户端访问服务端资源的时候,过率器可以把请求拦截下来,完成一些特殊的功能完成的操作一般都是通用的作用:列如登录验证。web中的Listener一般用于加…

    Java 2023年6月13日
    068
  • poi导出word文件(带表格)

    一.背景介绍 现有业务需求根据前端页面上所选的时间和列,来生成word表格,方便打印。 一.POM <dependency>   <g…

    Java 2023年6月9日
    072
  • 全文本搜索神器

    作为一个比较懒惰的人,文件经常放的找不到位置,整理后,又会由于层次太多,一层层打开文件夹,特别麻烦,对于文件搜索的问题,以前推荐过工具 Listary,可以非常好的解决这个问题。 …

    Java 2023年5月30日
    076
  • 阿里面试:MySQL如何设计索引更高效?

    数据库系列更新到现在我想大家对所有的概念都已有个大概认识了,这周我在看评论的时候我发现有个网友的提问我觉得很有意思:帅丙如何设计一个索引?你们都是怎么设计索引的?怎么设计更高效? …

    Java 2023年6月9日
    058
  • Java基础之 类型转换

    类型转换 由于Java是强类型语言,所以要进行有些运算的时候的,需要用到类型转换 运算中,不同类型的数据线转化为同一类型,然后进行运算 强制类型转换 自动类型转换 1 public…

    Java 2023年6月8日
    076
  • 巧用异或

    异或有以下规律 一般的交换方式, 利用临时变量: a = 1 b = 2 temp = a a = b b = temp 但你也可以使用异或的方法交换: a = 1 b = 2 a…

    Java 2023年6月7日
    0118
  • spring整合activemq发送MQ消息[Topic模式]实例

    Topic模式消息发送实例 1、pom引入 2、生产者配置 生产者程序 3、消费者配置 消费者监听代码 运行结果: 说明:属于学习,网上资料结合个人理解,理解有误的地方,期待指导和…

    Java 2023年5月30日
    066
  • SpringBoot教程,吃透这些知识点,超过90%的Java面试者

    动力节点王鹤老师的SpringBoot入门系列课程,通俗易懂,基于SpringBoot2.4版本讲解。 从细节入手,每个事例先讲解pom.xml中的重要依赖,其次applicati…

    Java 2023年6月9日
    045
  • java使用poi导出excel

    继上一篇导出pdf,这篇导出excel。 1、导入依赖 2、代码 import java.io.OutputStream;import java.net.URLEncoder; i…

    Java 2023年6月13日
    065
  • DataInputStream,DataOutputStream

    package com.gao.IO; import java.io.*; public class Test09 { public static void main(String…

    Java 2023年6月5日
    073
  • 微服务Docker打包

    微服务Docker打包 现在的微服务时代,你的代码没个微服务、分布式人家都会觉得低端,当然!对于我们开发人员来说,掌握这些技术意味着涨薪。 ​ 我们项目中用到了多个微服务,我们上一…

    Java 2023年6月15日
    073
  • Java Lambda基础——Function, Consumer, Predicate, Supplier, 及FunctionalInterface接口

    这几个接口经常与Lambda结合使用,网上当然也有很多介绍,不过有些过于繁琐,有些又偏简单,秉着实用主义精神,今天这里折中一下,把介绍的内容分为两部分,第一部分相当于TLDR,总结…

    Java 2023年5月29日
    067
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球