SpringBoot开发【配置】配置文件占位符

本文介绍了SpringBoot配置文件中的占位符使用,包括RandomValuePropertySource生成随机数和引用其他属性值的功能。通过示例展示了如何在配置文件中使用随机数以及设置默认值。还探讨了当引用不存在的属性时,如何通过占位符提供默认值以避免错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置文件占位符

RandomValuePropertySource:配置文件可以使用随机数属性配置占位符:可以在配置文件中引用前面配置过的属性(优先级前面配置过的这里都能用)

随机数:${random.value} ${random.int} ${random.long} ${random.int(10)} ${random.int[12543.26]} 具体操作功能大家可以自己尝试一下

${app.name}:默认值}来指定找不到属性时的默认值
我们来实验一下
这次我们用用主程序来测试,把之前写的@PropertySource注释掉,然后把Properties文件中的person配置恢复,并在后边添加随机数(无论是yml还是properties都支持)

person.last-name=张三${random.uuid}
person.age=${random.int}
person.boss=false
person.birth=2019/12/12
person.maps.k1=v1
person.maps.k2=v2
person.lists=a,b,c
person.dog.name=${person.last-name}_white
person.dog.age=10

我们在lastname、age、dog处添加了随机数,用test测试一下
测试结果测试结果我们发现分别在lastname、age和dog后边产生了随机数

占位符获取之前配置的值:如果没有配置,可以使用:指定默认值
假设我们person中lastname没有配置值,在dog处就会报错。
另外,我们可以给dog指定值,我们将${person.last-name}改为 ${person.hello},person.hello使我们没有配置过的值,这是测试会发现直接给了dog默认值person.hello
测试结果

我们将${person.hello}改为 ${person.hello:hello},这时dog被赋予了一个默认的值hello
测试结果

### Spring Boot 配置文件中的变量使用 在Spring Boot项目中,配置文件可以利用变量来增强灵活性和可维护性。两种主要类型的配置文件——`properties`和`yml`都支持这种特性[^1]。 #### 使用占位符定义变量 为了实现更灵活的应用程序配置,可以通过`${}`语法引入外部环境变量或者自定义属性作为占位符,在运行时由具体的值替换这些占位符。例如: ```yaml spring: datasource: url: ${DATABASE_URL} ``` 这段代码展示了如何从环境中读取名为`DATABASE_URL`的变量并将其赋给数据源URL字段[^4]。 #### 利用默认值防止缺失 当某些情况下指定名称的系统或环境级别变量不存在时,为了避免应用启动失败,可以在声明时提供一个默认值。这同样适用于`.properties`文件格式下的场景。比如下面的例子就指定了如果未找到对应环境变量,则采用预设字符串代替: ```properties server.port=${PORT:8080} ``` 这里表示如果没有检测到名为`PORT`的环境变量存在,默认端口号将被设定为8080[^2]。 #### 结合SpEL表达式扩展功能 除了简单的键值对映射外,还可以借助于强大的Spring Expression Language (SpEL),它允许编写更为复杂的逻辑判断语句直接嵌入到配置项之中。例如条件选择不同的服务地址等复杂操作均能得以实现。 ```yaml app: serviceUrl: #{ systemProperties['service.url'] ?: 'http://default-service-url.com' } ``` 上述片段演示了通过SpEL获取Java系统的属性,并设置了备用的服务网址以应对找不到特定系统属性的情况。 #### 动态调整行为而不改变源码 得益于这样的机制设计,开发者能够方便快捷地调整部署参数,从而影响整个应用程序的工作模式,这一切都不需要触及任何一行业务逻辑层面的编码工作。这对于多环境(开发/测试/生产)下快速切换配置尤为有用[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值