携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第10天,点击查看活动详情
概述
上一篇介绍到Spring boot的配置文件怎么给容器中添加组件。这一篇接着介绍Spring boot配置文件其他的用法。
配置文件占位符
- 随机数
${random.value}、${random.int}、${random.long}
${random.int(10)}、${random.int[1024,65536]}
占位符获取之前配置的值,如果没有可以是用:指定默认值
person.last-name=张三${random.uuid}
person.age=${random.int}
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=${person.hello:hello}_dog
person.dog.age=15
Profile
- 多Profile文件
我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml。默认使用application.properties的配置。
- yml支持多文档块方式
server:
port: 8081
spring:
profiles:
active: prod
---
server:
port: 8083
spring:
profiles: dev
---
server:
port: 8084
spring:
profiles: prod #指定属于哪个环境
- 激活指定profile
1、在配置文件中指定 spring.profiles.active=dev
2、命令行:java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev;可以直接在测试的时候,配置传入命令行参数。
3、虚拟机参数:-Dspring.profiles.active=dev
配置文件加载位置
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件 – file:./config/
– file:./
– classpath:/config/
– classpath:/
优先级由高到底,高优先级的配置会覆盖低优先级的配置;
SpringBoot会从这四个位置全部加载主配置文件;可以根据以上特性实现互补配置。
还可以通过spring.config.location来改变默认的配置文件位置。项目打包好以后,可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用形成互补配置;
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties
外部配置加载顺序
SpringBoot也可以从以下位置加载配置; 优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置
- 命令行参数
所有的配置都可以在命令行上进行指定。多个配置用空格分开;--配置项=值。
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.context-path=/abc
-
来自java:comp/env的JNDI属性
-
Java系统属性(System.getProperties())
-
操作系统环境变量
-
RandomValuePropertySource配置的random.*属性值
由jar包外向jar包内进行寻找,优先加载带profile。
-
jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件**
-
jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
再来加载不带profile。
-
jar包外部的application.properties或application.yml(不带spring.profile)配置文件
-
jar包内部的application.properties或application.yml(不带spring.profile)配置文件
-
@Configuration注解类上的@PropertySource
-
通过SpringApplication.setDefaultProperties指定的默认属性
所有支持的配置加载来源;参考官方文档
总结
经过上篇和本篇已经完成了Spring boot配置文件使用规范的介绍,重点是properties和yaml是默认的配置文件格式,是两种不同的书写风格。
配置文件的加载顺序,需要注意配置文件、命令行参数以及系统数据都可以作为配置的来源。