SpringBoot配置文件(properties、yml、yaml)
一、配置文件
- SpringBoot默认的配置文件:application.properties,键值对形式编写
![在这里插入图片描述](https://img-blog.csdnimg.cn/576a3905e2a5477ea82b75255051cd5c.png)
- 官网文档中有相关配置信息:https://docs.spring.io/spring-boot/docs/current/reference/html/
![在这里插入图片描述](https://img-blog.csdnimg.cn/c646e07032b94641a6657e46d9743f7d.png)
- 每一个配置对应一个技术和jar包有关
1、配置tomcat
# 服务器的端口配置
server.port=80
2、配置banner
# 修改banner
# 关闭banner的显示
#spring.main.banner-mode=off
# 设置banner的图片样式
#spring.banner.image.location=aaa.jpg
3、配置日志
# 日志
# debug日志
#logging.level.root=debug
# 报错日志
#logging.level.root=error
二、三种配置格式
1、application.properties(默认传统)
server.port=80
2、applicaiton.yml(主流常用)
server:
port: 81
3、application.yaml
server:
port: 82
三、配置文件加载优先级
- application.properties(大) -> applicaiton.yml(中) -> application.yaml(小)
- 不同配置文件中相同配置将被覆盖,不同配置文件中不同配置文件全部保留
四、yaml数据格式
1、语法规则
- 区分大小写
- 格式要求严格
- 属性名与属性值之间使用冒号+空格分隔
- 同层级的名称不能一样
- #表示注释
- IDEA会帮我们定义格式,书写注意即可
2、常用格式
# 常用格式
server:
port: 82
3、字面量格式
# 字面量
port: 8080
party: true
birthday: 2020-10-02
4、对象类格式
# 对象类
user:
name: admin
age: 16
5、数组数据格式
# 数组
likes:
- game
- music
- sleep
enterprise:
name: zs
age: 12
subject:
- Java
- 前端
- 大数据
lists2: [game,music,sleep]
6、对象数据格式
# 对象数组
users:
- name: zs
age: 18
- name: ls
age: 20
users2:
-
name: zs
age: 18
-
name: ls
age: 20
users3: [{name:zs,age:12},{name:ls,age:18}]
7、引用数据格式
# 出现大量相同的情况
a: c:\windows\system\a
b: c:\windows\system\b
c: c:\windows\system\c
# 引用数据
baseDir: c:\windows\system
# 如果出现转移字符,使用双引号包含
tempDir: "${baseDir}\temp \a \b"
# 使用${属性名}引用数据
tempDir1: ${baseDir}\a
tempDir2: ${baseDir}\b
tempDir3: ${baseDir}\c
五、Java读取yaml格式数据
1、注意事项
2、读取常用格式
@Value("${server.port}")
private String port1;
System.out.println("port1=====>" + port1);
3、读取字面量格式
@Value("${party}")
private String party1;
System.out.println("party1=====>" + party1);
4、读取对象类格式
@Value("${user.name}")
private String name1;
System.out.println("name1=====>" + name1);
5、读取数组格式
@Value("${likes[1]}")
private String likes1;
System.out.println("likes1=====>" + likes1);
6、读取对象数组格式
@Value("${users[1].age}")
private String age1;
System.out.println("age1=====>" + age1);
7、读取全部属性数据
@Autowired
private Environment env;
System.out.println(env.getProperty("server.port"));
System.out.println(env.getProperty("user.name"));
8、将数据封装成对象进行读取
# 创建类,用于封装下面的数据
# 由Spring帮我们加载数据到对象中,一定要告诉Spring加载这组信息
# 使用的时候从spring中直接获取信息使用
datasource:
driver: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost/springboot_db
username: root
password: 111111
package com.sgz.day62_springboot_demo;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties("datasource")
public class MyDataSource {
private String driver;
private String url;
private String username;
private String password;
public String getDriver() {
return driver;
}
public void setDriver(String driver) {
this.driver = driver;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "MyDataSource{" +
"driver='" + driver + '\'' +
", url='" + url + '\'' +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
@Autowired
private MyDataSource myDataSource;
System.out.println(myDataSource);
六、注解
1、@ConfigurationProperties