Spring Boot对配置文件支持非常友好,支持
*.properties
和*.yml
,前者是常用的配置文件,后者是Spring Boot推荐的配置文件。
一、Spring Boot支持的配置文件
Spring Boot支持两种配置文件,一个是常见的.properties格式,另外一个就是专有的.yml或者*.yaml格式。一般两者的命名都是application。
二、配置随机值
这里是介绍如何配置随机值等数值,可根据实际情况配置。两种配置方式是等效的,实际选择其中一种即可,推荐使用*.yml
。
1)application.properties
lemon.secret=${random.value}
# 获取一个随机整数
lemon.number=${random.int}
# 获取一个随机长整数
lemon.bignumber=${random.long}
# 获取一个随机0~10的随机整数
lemon.number.less.than.ten=${random.int(10)}
# 获取指定区间范围的随机整数
lemon.number.in.range=${random.int[1024,65536]}
2)application.yml
# 配置文件的设置
# 配置文件中是可以配置随机值的
lemon:
secret: ${random.value}
number: ${random.int}
bignumber: ${random.long}
number1:
less:
than: ${random.int(10)}
in:
range: ${random.int[1,10]}
注意:冒号后面都有一个空格。
加载Spring Boot应用时,会自动加载配置文件,在controller中获取配置文件中值的方式是通过@Value这个注解,@Value(value = "${lemon.secret}")。
三、属性占位符
当application.properties里的值被使用时,它们会被存在的Environment过滤,所以你能够引用先前定义的值(比如,系统属性)。
lemon.name=www.cug.edu.cn
lemon.desc=${lemon.name} is a domain name
yml配置文件中设置方法一致。
四、其他属性配置
# 端口配置
server.port=8090
# 时间格式化
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
# 时区设置
spring.jackson.time-zone=Asia/Chongqing
这是配置一些常见的公共属性。yml格式的配置文件配置如下:
# 端口配置
server:
port: 8080
# 时区和时间格式化
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: Asia/Chongqing
五、多文件配置
1、多环境配置文件的好处:
1)不同环境配置可以配置不同的参数
2)便于部署,提高效率,减少出错
2、Properties多环境配置
1)配置激活选项 spring.profiles.active=dev,可以修改值来确定不同的环境配置
2)添加其他配置文件
application.properties
application-dev.properties
application-test.properties
application-pro.properties
更改激活选项,就可以加载激活不同的环境配置文件。公共的配置信息可以写在application.properties文件中。
3、YAML多环境配置
spring:
profiles:
active: pro
# 时区和时间格式化
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: Asia/Chongqing
---
spring:
profiles: dev
# 端口配置
server:
port: 8080
---
spring:
profiles: pro
# 端口配置
server:
port: 8081
---
spring:
profiles: test
# 端口配置
server:
port: 8082
更改激活选项的值就可以启动不同的环境配置。不同的配置使用三个横杠(-
)区分即可。其实这是一种单文件多配置的一种体现方式。
4、两种配置方法的比较
Properties配置多环境,需要添加多个配置文件,YAML只需要一个配件文件
书写格式的差异,yaml相对比较简洁,优雅
YAML的缺点:不能通过@PropertySource注解加载。如果需要使用@PropertySource注解的方式加载值,那就要使用properties文件。
5、如何使用
在命令行启动:java -jar myapp.jar --spring.profiles.active=dev