1、配置文件
(1)全局的配置文件
名称有两种:
application.properties和application.yml
(2)作用
修改springboot自动配置的默认值(之所以springboot能够自动启动,就是因为springboot的底层已经配置了)
2、YAML(YAML Aint’s Markup Language)
(1)特点
以数据为中心,比json和xml等更适合做配置文件
(2)yaml配置方式与xml方式对比
yaml方式:
server:
port: 8081
xml方式:
<server>
<port>8080</port>
</server>
测试:
要注意:port:后面要加空格
3、YAML语法
(1)基本语法
- k:空格v 表示一对键值对
- 以空格的缩进来控制层级关系,只要是左对齐的一列都指同一层级,如:
server:
port: 8081
path: /nnnn
- 属性和值是大小写敏感的
(2)值的写法
字面量(数字、字符串、布尔)
server:
port: 8081
path: /nnnn
写法为 k:v:空格 字面量
字符串默认不用加上单引号或者双引号,加上双引号的话,不会转义字符串里面的特殊字符,也就是说特殊字符依旧有效;单引号会转义特殊字符
对象
student:
name: zhai
age: 23
行内写法:
student:{name: zhai,age: 23}
数组:
用-值的方式来表示数组中的一个元素
students:
- zhai
- zhang
- liu
- tom
行内写法:
students: [zhai,zhang,liu,tom]
(3)获取yaml配置文件中的数据
定义两个实体类,其中student实体类的属性包括Course类:
@Data
@Component
@ConfigurationProperties(prefix = "student")//告诉springboot将本类中的所有属性和配置文件的相关配置进行绑定
public class Student { //prefix:配置文件中哪一个名称下面的属性进行一一映射
private String sname;
private int age;
private Map<String,Object> maps;
private List<Object> list;
private Course course;
}
@Data
public class Course {
private String courseno;
private String coursename;
}
创建yaml配置文件:
student:
sname: zhai
age: 12
maps: {k1: 12,k2: 13}
list:
- zhai
- zhang
course:
courseno: 202007
coursename: javaweb
创建properties文件:
#配置student
student.age=12
student.sname=zhai
student.maps.k1=1
student.maps.k2=2
student.list=a,b,c
student.course.courseno=202007
student.course.coursename=java
测试类:
//可以在测试期间很方便地类似编码一样进行自动注入等容器的功能
@SpringBootTestclass Springboot03ApplicationTests {
@Autowired
Student student;
@Test
void contextLoads() {
System.out.println(student);
}
}
需要导入的依赖:配置文件处理器,配置文件进行绑定会有提示
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
(4)properties文件中文乱码的解决方案: