一、占位符
作用:指定默认值、获取值、生成随机数等。
person:
name: 张三${random.value}
age: ${random.int}
idCard: ${random.long}
uuid: ${random.uuid}
keyOne: ${random.int(10)}
keyTwo: ${random.int[1,100]}
dog:
name: ${person.name}家的旺财
二、多配置文件
我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml的形式,其中application.yml 或application.properties默认为主配置文件。
实际开发过程中,我们也常使用多配置文件的形式分别指定开发,测试和生产环境。
三、激活指定配置文件
方法一
在配置文件中指定 spring.profiles.active=dev
方法二
命令行,可以直接在测试的时候,配置传入命令行参数。java -jar spring-boot.jar --spring.profiles.active=dev
方法三
虚拟机参数-Dspring.profiles.active=dev
四、配置文件的加载位置
Spring Boot启动时会扫描以下位置的application.properties 或 application.yml文件作为Spring Boot的默认配置文件。
–file:./config/ ## 项目根路径的config目录下
–file:./ ## 项目的根路径下
–classpath:/config/ ## 资源文件根路径的config目录下
–classpath:/ ## 资源文件的根路径下
优先级由高到底,且四个位置的配置文件会全部加载,互补配置,高优先级的配置会覆盖低优先级的配置。
我们还可以通过spring.config.location
来改变默认的配置文件位置。项目打包好以后,我们可以使用命令行参数的形式,在启动项目的时候来指定配置文件的新位置;指定的配置文件和默认加载的这些配置文件共同起作用,形成互补配置。java -jar spring-boot.jar --spring.config.location=/home/gmd/application.yml
五、外部配置加载顺序
SpringBoot也可以从以下位置加载配置,优先级从高到低,高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置。
下列举例并不完全,详情见Spring官网
1、命令行参数
所有的配置都可以在命令行上进行指定
java -jar spring-boot.jar --server.port=8888 --server.context-path=/abc
多个配置用空格分开 —配置项=值
2、来自java:comp/env的JNDI属性
3、Java系统属性(System.getProperties())
4、操作系统环境变量
5、RandomValuePropertySource配置的random.*属性值
6、jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
7、jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
6和7 由jar包外向jar包内进行寻找,优先加载带profile的(application-{profile}.yml)。 8和9 由jar包外向jar包内进行寻找,再来加载不带profile
8、jar包外部的application.properties或application.yml(不带spring.profile)配置文件
9、jar包内部的application.properties或application.yml(不带spring.profile)配置文件
10、@Configuration注解类上的@PropertySource
11、通过SpringApplication.setDefaultProperties指定的默认属性