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

  • 相关阅读:
    冒泡排序(可传函数参数)
    字符串转化成整数
    遍历文档内容,得到HTML层级结构
    跨域通信问题
    矩阵的快速幂
    CSS tricks
    牛客赛马网笔试攻略
    项目中遇到的问题
    Mysql远程链接访问权限设置
    恢复delete删除的数据
  • 原文地址:https://www.cnblogs.com/javastack/p/9075673.html
Copyright © 2020-2023  润新知