您的位置:首页 > 编程语言 > Java开发

Spring Boot学习--从配置文件中获取随机数

2017-09-05 16:30 726 查看
废话少说,直入正题,从配置文件中获取符合规则的随机数。

在配置文件中直接加入以下代码,我放到application.properties中的:

my.secret=${random.value}
my.number=${random.int}
my.bignumber=${random.long}
my.uuid=${random.uuid}
my.number.less.than.ten=${random.int(10)}
my.number.in.range=${random.int[1024,65536]}


通过@Value注解在代码中获取:

@Component
public class MyBean implements CommandLineRunner{

@Value("${random.value}")
private String mySecret;

@Value("${my.number}")
private Integer myNumber;

@Value("${my.bignumber}")
private long myBignumber;

@Value("${my.uuid}")
private String myUuid;

@Value("${my.number.less.than.ten}")
private String myNumberLessThanTen;

@Value("${my.number.in.range}")
private String myNumberInRange;

@Override
public void run(String... args){
System.out.println("mySecret:"+mySecret);
System.out.println("myNumber:"+myNumber);
System.out.println("myBignumber:"+myBignumber);
System.out.println("myUuid:"+myUuid);
System.out.println("myNumberLessThanTen:"+myNumberLessThanTen);
System.out.println("myNumberInRange:"+myNumberInRange);
}
}


CommandLineRunner接口只是为了验证方便,实际使用的时候不需要实现,项目启动后这些变量就会随机被赋值,这就是所谓的RandomValuePropertySource。

通过@ConfigurationProperties获取

package springboot.externalized.configuration;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
* Created by pangkunkun on 2017/9/5.
*/
@ConfigurationProperties(prefix="my")
@Component
public class Config {

private String name;

private Integer age;

private Integer randomnumber;

private String secret;

private Integer number;

private Long bignumber;

private String uuid;

/**省略getter和setter方法*/
}

/**
* Created by pangkunkun on 2017/9/5.
*/
@Component
public class MyBean implements CommandLineRunner{

@Autowired
private Config config;

@Override
public void run(String... args){

System.out.println("config.name:"+config.getName());
System.out.println("config.age:"+config.getAge());
System.out.println("config.secret:"+config.getSecret());
System.out.println("config.number:"+config.getNumber());
System.out.println("config.bignumber:"+config.getBignumber());
System.out.println("config.uuid:"+config.getUuid());

}


@ConfigurationProperties(prefix=”my”)中的prefix=”my”表示获取以my为开头的变量。这种方法适合获取一组相关信息,即使不是random数据也是同样可以获取。

官网中给出的示例如下:

my.servers[0]=dev.bar.com
my.servers[1]=foo.bar.com


这里是配置文件中的信息,

代码:

@ConfigurationProperties(prefix="my")
public class Config {

private List<String> servers = new ArrayList<String>();

public List<String> getServers() {
return this.servers;
}
}


这里是将配置文件中的信息映射为一个ArrayList,这里我没有具体操作,大家可以试下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息