一、适用范围
仅适用于需要基础框架的国企、项目设计等,只针对于最基础的看懂springboot框架
二、YAML语法
- 存储对象
# 方法一:
person1:
name: zhangsan
person2:
name: zhangsan
age: 20
# 方法二:
person2: {name: 张三,age: 20}
# 一定要有两个空格
- 数组
address:
- beijing
- shanghai # 使用 -表示数组的每一个元素
# 行内写法
address:[beijing,shanghai]
- 纯量(类似常量)
msg1: 'hello \n word' # 单引号不会识别转义字符,输出hello \n word
msg1: "hello \n word" # 双引号会识别转义字符,输出hello 换行 word
- 参数引用
name: abc
person:
name: ${name} # 实际就是abc
age: 20
- 小结:
基本语法:
① 大小写敏感
② 数据值之前必须有空格,作为分隔符
③ 使用空格缩进表示层级关系,相同缩进表示同一级
三、读取配置内容
1. 使用@value方法
(1) 第一组
在java目录下面写.java文件
@RestController
public class HelloController {
@Value("${name}") # 这里的name必须与yaml文件一致
private String name; # 这里的name不用与yaml一致
}
# 调用name值并且打印出来
public String hello2() {
System.out.println(name);
}
yaml文件
name: abc
(2) 第二组
@RestController
public class HelloController {
@Value("${person.name}")
private String name2;
@Value("${person.age}")
private int age;
}
public String hello2() {
System.out.println(name2);
System.out.println(age);
}
yaml文件
person:
name: zhangsan
age: 20
第三组:数组访问
@RestController
public class HelloController {
@Value("${address[0]}")
private String address1;
}
public String hello2() {
System.out.println(address1);
}
yaml文件
address:
- beijing
- shanghai
2. 使用environment方法
.java文件
@Autowired
private Environment env;
@RequestMapping("/hello2")
public String hello2() {
System.out.println(env.getProperty("person.name"));
System.out.println(env.getProperty("address[0]"));
}
3. @configuraProperties方法
首先定义一个person类
package com.itheima.springbootinit;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private int age;
private String[] address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String[] getAddress() {
return address;
}
public void setAddress(String[] address) {
this.address = address;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
.java文件
@RestController
public class HelloController {
@Autowired
private Person person;
@RequestMapping("/hello2")
public String hello2() {
System.out.println(person);
String[] address = person.getAddress();
for (String s : address) {
System.out.println(s);
}
}