Spring Boot-配置文件之特殊配置

在上一章《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工程。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容