【基础系列】SpringBoot基础篇配置信息之自定义配置指定与配置内引用

文章目录
  1. I. 加载自定义配置文件
    1. 1. PropertySource注解
    2. 2. PropertySource 注解不生效问题
  2. II. 配置内引用
    1. 1. random随机数
    2. 2. 配置引用
  3. II. 其他
    1. 0. 项目
    2. 1. 一灰灰Blog
    3. 2. 声明
    4. 3. 扫描关注

前面两篇文章,分别介绍了如何获取配置信息,区分多环境的配置支持,配置信息的优先级问题,那么掌握这些是否就足够了呢?

  • 如何获取指定文件(即非application-xxx.properties)中的配置信息呢?
  • 配置文件中依赖其他配置文件的参数如何表示?

I. 加载自定义配置文件

前面在使用多环境的配置时,通过设置 spring.profiles.active 来选择加载具体的配置文件,如果没有精神洁癖的话,就把自定义的配置文件加上application-前缀,然后用这种方式来加载,当然是可行的

除此之外呢?

1. PropertySource注解

这个注解可以指定你想加载的配置文件,然后读取其中的配置信息, 使用姿势也相对简单

如在根目录下有配置文件 biz.properties

1
2
3
4
biz.token=mytoken
biz.appKey=asdf
biz.appVersion=1
biz.source=xxx.yyy

对应的加载配置的bean为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.git.hui.boot.properties.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

/**
* Created by @author yihui in 15:08 18/9/19.
*/
@Data
@Configuration
@PropertySource({"classpath:biz.properties"})
@ConfigurationProperties(prefix = "biz")
public class OtherProperBean {
private String token;
private String appKey;
private Integer appVersion;
private String source;
}

说明

  • @PropertySource({"classpath:biz.properties"}) : 从根目录下,加载配置文件biz.properties
  • @ConfigurationProperties(prefix = "biz"): 获取配置文件中,前缀为biz的配置

测试相关就不写了,有兴趣的直接自己尝试即可

2. PropertySource 注解不生效问题

接下来需要重点说一下的是,在我自己的测试中,最开始我的配置文件都是yml格式,然后发现上面的配置始终不生效,也不知道啥原因;然后把配置文件换成properties文件之后,就可以了;

至于为什么会有这个问题,先留着,后续有时间深入研究一下

II. 配置内引用

前面的配置中,使用${random.int}这种东西,啥意思?

1. random随机数

在配置文件中,支持通过 ${random} 来生成一些随机值

常见的几种用法如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 随机字符串
com.kfit.blog.value=${random.value}

# 随机int
com.kfit.blog.number=${random.int}

# 随机long
com.kfit.blog.bignumber=${random.long}

# 10以内的随机数
com.kfit.blog.test1=${random.int(10)}

# 10-20的随机数
com.kfit.blog.test2=${random.int[10,20]}

2. 配置引用

在配置中,一个参数需要引用另一个配置参数,可以怎么处理?

  • 使用 ${xxx} 来表示引用配置 xxx的值

1
2
3
4
5
6
biz.token=mytoken
biz.appKey=asdf
biz.appVersion=1
biz.source=xxx.yyy
# uuid的值为 mytoken#asdf
biz.uuid=${biz.token}#${biz.appKey}

II. 其他

0. 项目

1. 一灰灰Blog

一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

2. 声明

尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

3. 扫描关注

一灰灰blog

QrCode

知识星球

goals


打赏 如果觉得我的文章对您有帮助,请随意打赏。
分享到