官方文档: https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config.random-values
作用: 可注入到配置文件中



@Test
public void test1() {
RandomValuePropertySource test = new RandomValuePropertySource("test");
Console.log("数字格式必须遵守:要么random.数字类型,要么random.[数字类型][分隔符1][最小数字],[最大数字][分隔符2]");
Console.log("\n===========随机的int数字===========");
Console.log("=====不限定范围====");
Integer intNum = (Integer) test.getProperty("random.int");
Console.log(intNum);
Console.log("=====限定范围(左闭右开)下面两个表达的意思是一样的====");
intNum = (Integer) test.getProperty("random.int(1,2)");
Console.log(intNum);
intNum = (Integer) test.getProperty("random.int[1,2)");
Console.log(intNum);
Console.log("\n===========随机的long数字===========");
Console.log("=====不限定范围====");
Long longNum = (Long) test.getProperty("random.long");
Console.log(longNum);
Console.log("=====限定范围(左闭右开)====");
longNum = (Long) test.getProperty("random.long(100,200)");
Console.log(longNum);
Console.log("\n===========随机的uuid===========");
String uuid = (String) test.getProperty("random.uuid");
Console.log(uuid);
Console.log("\n===========随机的md5字符串===========");
String md5 = (String) test.getProperty("random.");
Console.log(md5);
md5 = (String) test.getProperty("random.");
Console.log(md5);
md5 = (String) test.getProperty("random.rwewerwerewre");
Console.log(md5);
}

注意: 每次调用获取都会不一样,或者在不同的组件Bean中注入也不一样
application.yml
my:
num: ${random.long}
num2: ${random.int(100,200)}
Spirngboot226ApplicationTests.java
@SpringBootTest
class Spirngboot226ApplicationTests {
@Autowired
Environment environment;
@Test
void contextLoads5() {
String property = environment.getProperty("my.num");
Console.log(property);
property = environment.getProperty("my.num");
Console.log(property);
property = environment.getProperty("my.num2");
Console.log(property);
property = environment.getProperty("my.num2");
Console.log(property);
}
}

TestController.java
@RequestMapping("test")
@Controller
@Getter
public class TestController {
@Value("${my.num}")
Long random;
}
Test2Controller.java
@RequestMapping("test")
@Controller
@Getter
public class Test2Controller {
@Value("${my.num}")
Long random;
}
Spirngboot226ApplicationTests.java
@SpringBootTest
class Spirngboot226ApplicationTests {
@Autowired
TestController testController;
@Autowired
Test2Controller test2Controller;
@Test
void contextLoads8() {
Long random = testController.getRandom();
Console.log(random);
random = testController.getRandom();
Console.log(random);
random = test2Controller.getRandom();
Console.log(random);
random = test2Controller.getRandom();
Console.log(random);
}
}
