SpringBoot基础篇配置信息之自定义配置指定与配置内引用
时间:2022-06-19
本文章向大家介绍SpringBoot基础篇配置信息之自定义配置指定与配置内引用,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前面两篇文章,分别介绍了如何获取配置信息,区分多环境的配置支持,配置信息的优先级问题,那么掌握这些是否就足够了呢?
- 如何获取指定文件(即非
application-xxx.properties
)中的配置信息呢? - 配置文件中依赖其他配置文件的参数如何表示?
<!-- more -->
I. 加载自定义配置文件
前面在使用多环境的配置时,通过设置 spring.profiles.active
来选择加载具体的配置文件,如果没有精神洁癖的话,就把自定义的配置文件加上application-
前缀,然后用这种方式来加载,当然是可行的
除此之外呢?
1. PropertySource
注解
这个注解可以指定你想加载的配置文件,然后读取其中的配置信息, 使用姿势也相对简单
如在根目录下有配置文件 biz.properties
biz.token=mytoken
biz.appKey=asdf
biz.appVersion=1
biz.source=xxx.yyy
对应的加载配置的bean为
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} 来生成一些随机值
常见的几种用法如下
# 随机字符串
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的值
如
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
- 一灰灰Blog个人博客 https://blog.hhui.top
- 一灰灰Blog-Spring专题博客 http://spring.hhui.top
一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
2. 声明
尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
- 微博地址: 小灰灰Blog
- QQ: 一灰灰/3302797840
3. 扫描关注
一灰灰blog
知识星球
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Android | Tangram动态页面之路(三)使用
- Android | Tangram动态页面之路(四)vlayout原理
- 基于QuestaSIM的SystemVerilog DPI使用流程(step by step)
- Android | Tangram动态页面之路(五)Tangram原理
- Android | Tangram动态页面之路(六)数据分离
- 在 mono 下使用微软的 OWIN 认证中间件
- 重温四大基础数据结构:数组、链表、队列和栈
- C# 程序在 Docker 中响应 Unix 信号
- Android | Tangram动态页面之路(七)硬核的Virtualview
- Spark SQL如何选择join策略
- 江湖事儿 | 技术人如何做好晋升准备
- Dockerfile 的 ENTRYPOINT 与 CMD
- Docker Entry Script 详解
- 使用 docker-compose 替代 docker run
- 分享给您一个快速离职的 SHELL 脚本