[Spring Boot] 配置文件
配置文件的作用
整个项目中所有重要的数据都是在配置文件中配置的:
- 数据库的连接信息
- 项目的访问端口
- 用于发现和定位问题的 日志信息
配置文件格式
两种格式:.properties 和 .yml
.properties 的优先级高于 .yml;但是一般一个项目中只会用其中一个
配置文件的命名必须是 application.后缀
语法格式
properties
可以看到配置数据库连接信息的时候,spring.datasource 写了三遍,代码有点冗余,这个在 .yml 格式中就解决了
默认的编码不是:UTF-8
自定义配置并读取
直接在配置文件中以 key=value 的方式写就可以了
读取:使用 @Value 注解,然后在注解里面使用 ${key} 来获取值;若没有使用 ${} 的话,就是将字符串赋值给变量(看下图)
yml
对于语法格式非常严苛的 key: value;
冒号后面有个空格
多级目录用 换行 + tab 来区分层级的 (类似于 python 的语法)
容易出错,多加注意
优点
- yml 可读性更高,易于理解(类似于 python 的语法,使用缩进来区分层级)
- yml 支持更多的数据类型,处了可以存储基础数据类型之外,还能存对象
- yml支持更多的变成语言,市面上常用的编程语言基本 yml 都能支持(比如:多个小组的程序涉及到一个共同的操作,这时就可以在云端建一个 yml 格式的文件,然后多种语言的程序都可以从云端拉取这一份配置文件,该一份所有代码的就都改了)
系统配置
自定义配置并读取
基础数据类型
特殊点
在 yml 的配置文件中如果使用双引号修饰value值,那么value值中的转义字符就会发挥作用
在 properties 中,下面三种方式,转义字符都会生效
配置对象
- 先在 yml 中按照语法,定义对象的属性名和值
- 然后定义一个实体类,其属性要与配置文件中的名字一一对应(顺序不做要求),然后提供get / set 方法
- 使用两个注解:@Component 与 @ConfigurationProperties(prefix = “key”) – prefix是指定当前对象用配置文件中那个key-value来赋值;@Component 是用来指定赋值操作什么时候进行(有了Component,ConfigurationProperties才会生效)
- 最后就是使用了:@Autowired来进行对象的注入,然后使用即可
// Component在这里的作用:
// 1. 让@ConfigurationProperties注解生效;
// 2.在从配置文件中将值注入后,将Student对象存入Spring中
@Component
@ConfigurationProperties(prefix = "student") // 指定将配置文件中key为student的值赋值给当前对象(通过set方法进行赋值的)
public class Student {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
配置集合
类似于 上述的配置对象
附录
更多配置项
https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html
设置不同环境的配置文件
- 创建不同环境的配置文件
- application-dev.yml
- application-prod.yml
- 在 application.yml中设置允许环境
rties.html
设置不同环境的配置文件
- 创建不同环境的配置文件
- application-dev.yml
- application-prod.yml
- 在 application.yml中设置允许环境