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)

大家都在看

  • docker

    P1.docker镜像无法删除(检索关键词:无法删除) 现象:删除提示:Error:No such image:x…

    Java 2023年6月16日
    077
  • YSPASYS 中小型企业简单员工评价考核系统

    背景:公司运营接近2年时间了,随着不断的有员工入职、离职,使用信息化管理员工各类信息是一件很有必要的事儿。诸如员工基本信息,内部公告,资产盘点,客户管理,工作周报,优秀员工评选,请…

    Java 2023年6月9日
    087
  • pato-mqtt示例代码

    -*- coding: utf-8 -*- """ @author: Mr_zhang @software: PyCharm @file: publi…

    Java 2023年5月30日
    076
  • 解决SpringBoot jar包中的文件读取问题

    前言 SpringBoot微服务已成为业界主流,从开发到部署都非常省时省力,但是最近小明开发时遇到一个问题:在代码中读取资源文件(比如word文档、导出模版等),本地开发时可以正常…

    Java 2023年6月14日
    081
  • Java编程思想第四版(完整中文高清版)pdf

    ​这是一本有独到、深入的见解的Java语言,以通俗易懂及小而直接的示例解释了一个个晦涩抽象的概念。本书共22章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常…

    Java 2023年6月5日
    077
  • Docker学习笔记二(linux下安装Docker)

    Docker学习笔记二(linux下安装Docker) 1.在线安装linux Docker 这种方式首先要保证linux 环境下可以上网,当然,小编是在自己的电脑上安装了虚拟机,…

    Java 2023年6月16日
    098
  • 使用Animate.css

    Animate.css是一个css动画库,可以做出一些非常好看的动画; 官网:https://animate.style Animate.css非常容易上手,但是动画是一开始就加载…

    Java 2023年6月6日
    0103
  • 在技术上如何实现发送一条短信?

    我是3y,一年 CRUD经验用十年的 markdown程序员👨🏻‍💻常年被誉为优质八股文选手 austin项目实现的第一个渠道:: 从发送短信开始 01、短信介绍 在项目介绍的时候…

    Java 2023年6月9日
    093
  • 消息中间件MQ的学习境界和路线

    在《深入理解Java类加载机制,再也不用死记硬背了》里我提到了对于一门语言的”会”的三个层次。本篇将以知识地图的形式展现学习消息中间件MQ各个层次要掌握的内…

    Java 2023年5月30日
    0124
  • 日志的搭建

    @ 前言 一、依赖 二、日志文件 三、代码编写 四、日志输出 提示:本文仅供学习交流,请勿用于非法活动! 前言 本文内容: 日志搭建 一、依赖 ch.qos.logback log…

    Java 2023年6月13日
    079
  • 如何搭建一个WEB服务器项目(二)—— 对数据库表进行基本的增删改查操作

    使用HibernateTemplate进行增删改查操作 观前提示:本系列文章有关服务器以及后端程序这些概念,我写的全是自己的理解,并不一定正确,希望不要误人子弟。欢迎各位大佬来评论…

    Java 2023年6月8日
    086
  • 【LEETCODE】73、根据身高重建队列 第406题

    说实话,这道题我没想出来,但是看解题报告题解比较让人觉得眼前一亮,这里记录下来 package y2019.Algorithm.greedy.medium; import java…

    Java 2023年6月5日
    081
  • android开发如何判断一个类是java类还是kotlin类的解决方法

    随着kotlin越来越流行,项目引入kotlin混编可能性越来越大,有时可能需要业务判断是java编写的还是是kotlin编写,今天折腾了一下,终于搞定编码过程如何判断一个类是ja…

    Java 2023年5月29日
    073
  • JavaWeb-Servlet(2)

    Web-Servlet(2)–Thymeleaf 视图模板技术,是做视图渲染的一个技术(静态页面和数据柔和在一起) 基本流程 在服务器端引入Thymeleaf环境 1….

    Java 2023年6月5日
    083
  • Spring Boot入门系列(十七)整合Mybatis,创建自定义mapper 实现多表关联查询!

    之前讲了Springboot整合Mybatis,介绍了如何自动生成pojo实体类、mapper类和对应的mapper.xml 文件,并实现最基本的增删改查功能。mybatis 插件…

    Java 2023年5月30日
    091
  • SpringBoot下使用AOP做日志

    AOP实现接口执行时间的计算: SpringBoot项目导入spring-boot-starter-aop依赖 编写切面类 类上加@Aspect注解,表明这是一个切面类 类上加@C…

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