1、Spring Boot配置文件
整个项目中所有重要的数据都是在配置文件中配置的,比如:
- 数据库连接信息(包括用户名和密码的设置)
- 项目的启动端口
- 第三方系统的调用密钥等信息
- 用于发现和定位问题的普通日志和异常日志等
Spring Boot配置文件主要分以下两种格式: .properties 和 .yml
yml使用进阶
yml 配置不同数据类型
# 字符串
string.value: true
# 布尔值, true 或 false
boolean.value1: true
boolean.value2: false
# 整数
int.value1: 10
int.value2: 0b1010_0100 # 二进制
# 浮点数
float.value1: 3.1415926
float.value2: 314159e-5 # 科学计数法
# Null ~代表null
null.value: ~
注意事项:
如果值为双引号引起的字符串,内部若存在转义字符会被转义,其余直接输出
myString1: 你好,世界\n
myString2: '你好,世界\n'
myString3: "你好,世界\n" # 双引号会转义
yml配置对象
# 1、普通写法
student1:
id: 1
name: Java
age: 18
# 2、行内写法
student2: {id: 2, name: C++, age: 18}
yml配置的对象不能使用@Value来读取,需要使用@ConfigurationProperties来读取,具体实现如下
@Component
@ConfigurationProperties("student1") // 1、使用@ConfigurationProperties注解
@Data // 2、实体类属性名要和配置中的key一致,并必须要提供setter和getter方法
public class Student {
private int id;
private String name;
private int age;
}
yml 配置集合
配置文件也可以配置list集合,如下所示
# 普通写法
dbtypes:
name:
- mysql
- sqlserver
- db2
# 行内写法
dbtypes: {name: [mysql, sqlserver, db2]}
集合的读取和对象一样,也是使用@ConfigurationProperties来读取的,具体实现如下:
@Component
@ConfigurationProperties("dbtypes")
@Data
public class ListConfig {
private List<String> name;
}
Properties vs Yml
- Properties 是以key=value的形式配置键值对的配置文件,而yml使用的是类似json格式的树形配置方式
- properties为早期且默认的文件格式,存在一定的冗余数据,yml可以很好解决数据冗余问题
- yml通用型更好,支持更多的语言,如:Java、Go、Python等,如果是云服务器开发,可以使用一份配置文件作为Java和Go的共同配置文件
- yml支持更多的数据类型
Spring Boot 项目使用不同环境的配置文件
application.yml / application.properties 是主配置文件,可以通过设置spring.profiles.active来指定哪个子配置文件生效,active的值对应子配置文件application-前缀后,.yml / .properties 后缀前的字符串