yml 文件规则
- key: value 格式书写
- key 后面跟着冒号,再后面跟着一个空格,然后是值
- yml不支持tab缩进
- 可以使用 “-小写字母” 或 "_小写字母"来 代替 “大写字母”,如 userName 与 user-name、user_name 含义是一样的
yml常见格式
-
普通的值(数字,字符串,布尔)
字符串默认不用加上单引号或者双引号,比如:
"":双引号不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
name: “zhangsan \n lisi”:输出;zhangsan 换行 lisi
’’:单引号会转义特殊字符,特殊字符最终只是一个普通的字符串数据
name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi -
对象、Map (属性和值) (键值对)
对象还是k: v的方式。k: v:在下一行来写对象的属性和值的关系;注意缩进(不支持tab,使用空格) -
数组 (List、Set)
数组(List、Set)用- 值表示数组中的一个元素
方式一:@Value
配置文件内容:
name: hc
age: 18
content: "${name}的年龄是:${age}"
Controller代码:
@RestController
public class YmlInfoController {
@Value("${name}")
private String name;
@Value("${age}")
private Integer age;
@Value("${content}")
private String info;
@RequestMapping("/f1")
public String f1() {
System.out.println(name + "\t" + age);
return info;
}
}
注意:@Value所在的类需要是一个组件,如果是实体类需要加上@Component注解。
方式二:@ConfigurationProperties
示例1:
配置文件内容:
stu:
num: 1001
name: zhangsan
age: 18
实体类:
@Component
@ConfigurationProperties(prefix = "stu")
public class YmlInfo {
private Integer num;
private String name;
private Byte age;
public Integer getNum() {
return num;
}
public void setNum(Integer num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Byte getAge() {
return age;
}
public void setAge(Byte age) {
this.age = age;
}
}
Controller代码:
@RestController
public class YmlInfoController {
@Autowired
private YmlInfo ymlInfo;
@RequestMapping("/f2")
public YmlInfo f2(){
return ymlInfo;
}
}
示例2:
配置文件内容:
bean:
map:
num: 1001
name: zhangsan
age: 18
array: 1,2,3,4,5,6
list:
- swim
- jump
- run
- read
实体类:
@Component
@ConfigurationProperties(prefix = "bean")
public class YmlInfo {
private Integer num;
private String name;
private Byte age;
private Map<String,Object> map;
private String[] array;
private List<String> list;
public Integer getNum() {
return num;
}
public void setNum(Integer num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Byte getAge() {
return age;
}
public void setAge(Byte age) {
this.age = age;
}
public Map<String, Object> getMap() {
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
public String[] getArray() {
return array;
}
public void setArray(String[] array) {
this.array = array;
}
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
}
Controller代码:
@RestController
public class YmlInfoController {
@Autowired
private YmlInfo ymlInfo;
@RequestMapping("/f22")
public YmlInfo f22(){
return ymlInfo;
}
}
方式三:@Environment
配置文件内容:
array: 1,2,3,4,5,6
favorite:
-swim
-jump
-run
-read
Controller代码:
@RestController
public class YmlInfoController3 {
@Autowired
private Environment environment;
@RequestMapping("/f3")
public String f3() {
String array = environment.getProperty("array");
System.out.println(array);
String favorite = environment.getProperty("favorite");
return favorite;
}
}