Spring Boot Random Configuration Property Values
In this tutorial we demonstrate how to generate random property values for configuration properties using Spring Boot. The RandomValuePropertySource class is added – by spring boot – to the classpath. We can use it to produce random String, Integer, Long or UUID values.
Maven Dependencies
We use Apache Maven to manage our projects dependencies. Make sure you add at least the following dependency to your project.
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.memorynotfound.springboot</groupId> <artifactId>random-values</artifactId> <version>1.0.0-SNAPSHOT</version> <url>https://memorynotfound.com</url> <name>Spring Boot - ${project.artifactId}</name> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.3.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
Random Configuration Property Values
We can produce random values in our configuration file. We can get a random value by using ${random.<type>} as a value for a configuration property. At the moment, only String, Integer, Long or UUID types are supported. You can optionally add a range filter at the end e.g.: ${random.int[<start>,<end>]}.
my: secret: password: ${random.value} intValue: ${random.int} intValueRange: ${random.int[1,99]} longValue: ${random.long} longValueRange: ${random.long[111111111111,999999999999]} uuid: ${random.uuid}
Spring Boot – Get Random Property Values
That’s it for the configuration, the RandomValuePropertySource will automatically inject the random value into the configuration file. Once our application boots, we can simple get those generated configuration properties. We demonstrate this using the following code.
package com.memorynotfound.springboot; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import javax.annotation.PostConstruct; import java.util.UUID; @SpringBootApplication public class Application { private static Logger log = LoggerFactory.getLogger(Application.class); @Value("${my.secret.password}") private String password; @Value("${my.secret.intValue}") private Integer intValue; @Value("${my.secret.intValueRange}") private Integer intValueRange; @Value("${my.secret.longValue}") private Long longValue; @Value("${my.secret.longValueRange}") private Long longValueRange; @Value("${my.secret.uuid}") private UUID uuid; public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } @PostConstruct private void init(){ log.info("Configure Random Property Values using Spring Boot"); log.info("password: " + password); log.info("intValue: " + intValue); log.info("intValueRange: " + intValueRange); log.info("longValue: " + longValue); log.info("longValueRange: " + longValueRange); log.info("uuid: " + uuid); } }
Output
The previous application simply prints the output to the console.
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.3.RELEASE) 2017-05-29 11:48:24.143 INFO 7320 --- [ main] c.memorynotfound.springboot.Application : Configure Random Property Values using Spring Boot 2017-05-29 11:48:24.144 INFO 7320 --- [ main] c.memorynotfound.springboot.Application : password: 41a84b2a3065083822dc27e0d960a782 2017-05-29 11:48:24.144 INFO 7320 --- [ main] c.memorynotfound.springboot.Application : intValue: -228998254 2017-05-29 11:48:24.144 INFO 7320 --- [ main] c.memorynotfound.springboot.Application : intValueRange: 77 2017-05-29 11:48:24.144 INFO 7320 --- [ main] c.memorynotfound.springboot.Application : longValue: -696529864237843521 2017-05-29 11:48:24.144 INFO 7320 --- [ main] c.memorynotfound.springboot.Application : longValueRange: 505141632395 2017-05-29 11:48:24.144 INFO 7320 --- [ main] c.memorynotfound.springboot.Application : uuid: d46ce465-2ab0-479f-b8e6-7ea37b5647a7 ...
Download
From:一号门
COMMENTS