【Spring Boot】Spring Boot的系统配置 — 其他配置

其他配置

Spring Boot支持很多非常实用的参数配置功能。本节介绍Spring Boot配置生成随机数、配置引用等实际项目中的实用配置。

1.随机数

在项目开发过程中,可能需要配置生成随机数,比如说随机配置的服务器端口、随机生成登录密钥等等。Spring Boot支持在系统加载时配置随机数,使用${random}可以生成各种不同类型的随机值,从而简化代码生成的麻烦,例如生成int值、long值、string字符串。

Spring Boot提供的RandomValuePropertySource配置类可以很方便地生成随机数,可以生成integer、long、uuids和string类型的数据。下面通过示例来演示如何配置生成随机数。

首先,在application.properties中添加随机数的配置项。

# 随机字符串
cfg.random.value=${random.value}
# uuid
cfg.random.uuid=${random.uuid}
# 随机int
cfg.random.number=${random.int}
# 随机Long
cfg.random.bignumber=${random.long}
# 10以内的随机数
cfg.random.test1=${random.int(10)}
# 10-20的随机数
cfg.random.test2=${random.int[10,20]}

上面的示例中,在application.properties配置文件中增加配置项以使用${radom.xxx}的形式实现生成随机数。

然后,创建配置映射类ConfigRandomValue获取随机数配置项,读取配置项的方式和读取普通配置项的方式一样:通过@Value或者@ConfigurationProperties注解来读取。示例代码如下:

@Component
public class ConfigRandomValue {
	@Value("${cfg.random.value}")
	private String secret;
	@Value("${cfg.random.number}")
	private int number;
	@Value("${cfg.random.bignumber}")
	private long bigNumber;
	@Value("${cfg.random.uuid}")
	private String uuid;
	@Value("${cfg.random.test1}")
	private int number2;
	@Value("$[cfg.random.test2}")
	private int number3;
	
	//省略get、set
}

在上面的示例中,我们创建了ConfigRandomValue配置生成类,通过@Value注解读取了配置文件中的配置。最后,验证随机数配置是否生效。创建单元测试,验证随机数是否生成成功。示例代码如下:

@Autowired
private ConfigRandomValue randomValue;
@Test
void getRandom() {
	System.out.printIn(randomValue.getSecret());
	System.out.printIn(randomValue.getUuid());
	System.out.printIn(randomValue.getBigNumber());
	System.out.printIn(randomValue.getNumber());
	System.out.printIn(randomValue.getNumber2());
	System.out.printIn(randomValue.getNumber3());
}

在上面的示例中,首先注入了自定义的随机数生成配置类,然后调用了相关的配置项来验证随机数规则是否生效。

2.配置引用

Spring Boot支持使用占位符获取之前的属性配置,也就是在后一个配置的值中直接引用先前定义过的配置项,直接解析其中的值。这样做的好处是:在多个具有相互关联的配置项中,只需要对其中一处配置项预先设置,其他地方都可以引用,省去了后续多处修改的麻烦。

使用格式为:${name},name表示先前在配置文件中已经设置过的配置项名。下面通过示例演示如何在配置文件中实现参数引用。

我们修改application.properties配置文件,示例代码如下:

my.name=ZhangSan
my.sex=1
my.des=My name is $(my.name}.

在上述示例中,首先设置了my.name=ZhangSan;接着在my.des配置项中使用${my.name}来引用my.name配置项的值。my.des获取到的是:My name is ZhangSan。

${my.name}还可以使用“:”指定默认值,避免没有配置参数导致程序异常,示例代码如下:

my.des=My name is ${my.name:weiz}

在上面的示例中,我们通过冒号“:”设置配置项的默认值为:weiz,如果配置项为空或者未找到该配置项,系统也不会出错,my.des获取到的是:My name is weiz。

随机数和配置引用非常简单,在项目开发过程中非常实用。

你可能感兴趣的:(Spring小知识,spring,boot,python,后端)