在上一章《Spring Boot-配置文件》我们知道了如何配置和启动一个Spring Boot应用,以及多环境、外部化配置的实现方式。除了以上内容外,在日常的开发中,我们有可能会遇到一些特殊化的配置,包括但不限于以下内容:
- 配置随机数
- 配置内容加密
配置随机数
summer:
config:
title: @summer.config.title@
# 随机字符串
randomStr: ${random.value}
# 随机int
randomInt: ${random.int}
# 随机long
randomLong: ${random.long}
# 10以内随机数
random10: ${random.int(10)}
# 10-20随机数
random20: ${random.int[10,20]}
默认值
占位符获取之前配置的值,如果没有可以是用“冒号”指定默认值
${HOST:localhost}
配置内容加密
在使用配置文件中,如果涉及到密码之类的敏感信息,直接以明文的形式配置,是十分不明智的,所以,我们需要对我们的敏感信息进行加密。
集成jasypt
Spring Boot集成jasypt
十分方便,只需要引入jasypt-spring-boot-starter
即可。
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
配置秘钥
jasypt.encryptor.password: xxdyu7DR.x
,这个秘钥根据自己的时机情况定义。
通过如下代码获取加密后的配置信息:
@Test
public void getPassword() {
BasicTextEncryptor encryptor = new BasicTextEncryptor();
encryptor.setPassword("xxdyu7DR.x"); //秘钥,与配置中的秘钥一致
System.out.println(encryptor.encrypt("123456")); // 明文密码加密
}
测试
测试结果:password=123456
PS: 关于Spring Boot yml 配置中的单引号('')和双引号("")之间的区别单引号。单引号:不会转义特殊字符,特殊字符最终只是作为一个普通的字符串数据;双引号:会转义字符串里面的特殊字符,如\n被转义为换行
伙伴们,行动起来,加油!!!
源码地址:https://gitee.com/pftian/spring-boot-learning.git,运行spring-boot-config工程。