一、配置文件的作用
- 配置数据库的连接信息(root / password)
- 项目的启动端口(端口号)
- 第三⽅系统的调⽤秘钥等信息(身份校验)
- 配置日志的级别
二、配置文件的格式
Spring Boot 配置⽂件主要分为以下两种格式:
- .properties
- .yml
如图所示:
1、注意
我们上一节提到过:在 Spring Boot 中是约定大于配置。那么在配置文件这块,约定就是文件名一定是 application 才行。
例如:我们将 配置文件改为 -> applications
- 配置文件内容就是修改端口号为 9090
server.port=9090
- 运行结果为:
- 配置文件名为 application.properties:
- 配置文件名为 applications.properties:
- 配置文件名为 application.properties:
从上面的例子,我们可以看出 Spring Boot 只能识别 applications.properties/.yml 的配置文件。
2、说明
举例:
.properties 配置如下:
server.port=9090
.yml 配置如下:
server:
port: 9091
运行结果为:
上述结果说明:
- .properties 和 .yml 可以共存,但是 .properties 配置⽂件的优先级最⾼;即如果 .properties 和
.yml 中出现了相同的配置,会以 .properties 为主。 - Spring Boot 在加载配置过程中,加载完.properties ⽂件之后,也会加载 .yml ⽂件的配置信息。
- 在实际业务中,我们通常会以一直方式来配置文件,这样可以降低错误率。
三、properties 配置文件说明
1、基本语法
properties 是以键值的形式配置的,key 和 value 之间是以“=”连接的,例如:
# 设置端口号
server.port=9090
# 设置数据库的连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/spring?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
# 用户自定义配置项
mykey.key1=wzr
mykey.key2=zyf
2、读取配置文件
@Value 注解使用“${}”的格式读取,代码如下:
@RestController
public class TestController {
@Value("${mykey.key1}")
private String mykey;
@RequestMapping("/hikey")
public String HiKey(){
return "Hi," + mykey;
}
}
运行结果为:
① 注意
这里必须 使用 “${}” 的格式读取,否则就会读取失败,举例:
@RestController
public class TestController {
@Value("mykey.key1")
private String mykey;
@RequestMapping("/hikey")
public String HiKey(){
return "Hi," + mykey;
}
}
运行结果为:
这是因为,在 Spring Boot 中 约定大于配置,我们约定好 @Value 注解使用“${}”的格式读取到key 对应的 value 值,否则只会把它作为一个字符串赋值给 mykey.key1,而不是读取 mykey.key1 对应的 value 值。
3、优缺点
- 优点:写法简单,不易出错
- 缺点:写法不够灵活,有很多的冗余的信息,如数据库配置中同样的前缀要写很多次:
这个缺点就需要 .yml 配置文件来解决了。
四、yml 配置文件说明
yml 是 YAML(Yet Another Markup Language)的缩写。
yml 的优点:
- 可读性高,写法简单;
- 支持更多的数据类型,还可以表示 数组、散列表、标量等数据结构;
- 支持更多的编程语言,除去 Java,yml 还支持 Golang、Python、PHP、JavaScript等。
1、基本语法
格式:注意冒号后边有空格!!!
# 设置端口号
server:
port: 9090
# 设置数据库的连接信息
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/spring?characterEncoding=utf8
username: root
password: 123456
# 用户自定义配置项
mykey2: wzr....
2、yml 使用进阶
① yml 配置不同数据类型及 null
Ⅰ. yml 配置读取
yml 读取和 properties 相同,代码如下:
@RestController
public class TestController {
@Value("${mykey2}")
private String mykey2;
@RequestMapping(