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

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

配置文件占位符

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项目中,配置文件(`application.properties`或`application.yml`)的管理对于不同环境下的部署至关重要。当构建并打包应用程序时,默认情况下Maven或Gradle会将位于`src/main/resources/`目录中的配置文件纳入最终的JAR包内。 如果希望更改默认行为,比如使用不同的命名约定或是外部化某些特定于环境的属性,则可以采取如下措施: #### 使用Profile-Specific Configuration Files 为了支持多环境配置,在资源路径下可放置多个带有profile前缀的配置文件,如`application-dev.yml`, `application-prod.yml`等。这些文件允许针对开发、测试和生产环境分别定制参数而无需改变核心代码逻辑[^4]。 ```yaml # example of application-dev.yml content server: port: 8081 spring: profiles: active: dev ``` #### 自定义配置文件位置与名称 除了依赖内置机制外,还可以通过编程方式调整加载规则。例如,在启动类里利用`SpringApplicationBuilder`对象及其提供的API来指定其他地方存在的配置源[^3]: ```java @SpringBootApplication public class CustomConfigApp { public static void main(String[] args) { new SpringApplicationBuilder(CustomConfigApp.class) .properties("spring.config.name=myapp", "spring.config.location=classpath:/custom-config/") .run(args); } } ``` 上述例子展示了如何让应用查找名为`myapp.yml`而非标准名的应用程序配置,并且指定了额外的位置作为候选读取点。 #### 构建工具插件的支持 对于基于Maven的工程来说,借助maven-resources-plugin可以在编译期替换占位符变量的实际值,从而实现更灵活的配置注入策略。同样地,Gradle也有相应的task用于处理相似的任务。 ```xml <!-- Maven pom.xml snippet --> <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build> <profiles> <profile> <id>prod</id> <activation> <activeByDefault>false</activeByDefault> </activation> <properties> <env.type>production</env.type> </properties> </profile> </profiles> ``` 以上XML片段说明了怎样启用过滤功能以及根据激活的状态动态决定哪些属性会被应用于当前环境中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值