Spring Boot 配置随机数的技巧代码详解

时间:2022-05-10 18:18:27

spring boot支持在系统加载的时候配置随机数。

添加config/random.properties文件,添加以下内容:

?
1
2
3
4
5
6
7
8
9
10
11
12
#随机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]}

添加绑定类:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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的配置类:

?
1
org.springframework.boot.context.config.randomvaluepropertysource

来看下它的源码,实现其实很简单。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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 配置随机数技巧,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!

原文链接:https://www.cnblogs.com/javastack/archive/2018/05/23/9075673.html