Java第四十五天,SpringBoot框架系列,SpringBoot基础(四)
配置文件
1.SpringBoot 支持的配置文件
SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者application.yml(application.yaml)进行配置
SpringBoot默认会从Resources目录下加载application.properties或application.yml(application.yaml)文件
2.YML 配置文件
(1)定义
YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入比传统的xml方式更加简洁。YML文件的扩展名可以使用.yml或者.yaml
(2)格式
1.普通
key: value
2.对象
object:
key1: value1
key2: value2
......
或
object: {key1: value1,key2: value2,......}
3.字符串集合
objects:
- obj1
- obj2
......
或
object: [obj1,obj2,......]
4.对象集合
objects:
- obj1_lab1: value1
obj1_lab2: value2
- obj2_lab1: value1
obj2_lab2: value2
......
或
object: [{lab1: value1,lab2: value2},{lab1: value1,lab2: value2},......]
5.Map(同对象)
objects:
- obj1_key1: value1
obj1_key2: value2
- obj2_key1: value1
obj2_key2: value2
......
或
object: [{key1: value1,key2: value2},{key1: value1,key2: value2},......]
// 语法类似于 python 利用缩进关系(空格)来代表层级关系
(3)举例
1.普通数据(注意,: 后面有空格)
name: [姓名]
2.对象
person:
name: [姓名]
age: [年龄]
3.对象
person: {name: [姓名],age: [年龄]}
规范
1.层级关系之间用 空格 隔开,至于几个空格,并没有严格要求,行业习惯用 tab 隔开
2.key 与 value 之间,需要在 : 后面加空格
3.配置文件如果存在相同配置 key 的话,会存在覆盖关系;因此可以利用自定义配置文件修改(覆盖)默认配置信息
4.无论哪个字段不要写成驼峰式,最好写成下划线式
3.读取配置文件中的信息
1.通过 @value 注解
@Value("${变量名}")
@Value("${对象名.变量名}")
2.使用注解@ConfigurationProperties映射
通过注解@ConfigurationProperties(prefix="配置文件中的key的对象")可以将配置文件中的配置自动与实体进行映射
(1)要求
- 使用@ConfigurationProperties方式可以进行配置文件与实体字段的自动映射,但需要字段必须提供set方法才可以
- 添加映射器依赖(可有可无,但在配置 yml 配置文件的时候,会给出对应提示)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
(2)举例
person-one:
name: xiaohong
age: 20
@RestController
@RequestMapping("/test")
@ConfigurationProperties(prefix = "person-one")
public class TestController {
private String name;
private String age;
public void setName(String name) {
this.name = name;
}
public void setAge(String age) {
this.age = age;
}
@RequestMapping("/name")
public String say() {
return name + ":" + age;
}
}