一、yml文件规则
- yml文件的好处,天然的树状结构,一目了然,实质上跟properties是差不多的
- 不支持tab缩进,需要使用空格
- 可以使用 “-小写字母” 或 “_小写字母” 来 代替 “大写字母”,如 userName 与 user-name ,user_name 含义是一样的
- key: value 格式书写,key 后面跟着冒号,再后面跟着一个空格,然后是值
值的几种数据类型:
- 普通的值(数字,字符串,布尔)
age: 18
name: mysgk
- 对象、Map (属性和值) (键值对)
person:
age: 18
name: mysgk
- 数组 (List、Set)
用 - 值表示数组中的一个元素,如:
hands:
- left
- right
备注:
(1)字符串默认不用加上单引号或者双引号;
(2)""(双引号),不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思。(如:name: “zhangsan \n lisi” 输出:zhangsan 换行 lisi)
(3)’’(单引号),会转义特殊字符,特殊字符最终只是一个普通的字符串数据。(如:name: ‘zhangsan \n lisi’:输出:zhangsan \n lisi)
二、读取yml的方式
2.1 使用@Value
server:
port: 8081
在代码中可以这样取值
@Value("${server.port}")
public String port;
备注:此处的prot所在的类需要是一个组件,如果是实体类需要加上@Component
2.2 使用@ConfigurationProperties
如果需要一个 JavaBean 来专门映射配置的话,我们一般会使用@ConfigurationProperties来读取
student:
age: 18
name: mysgk
JavaBean
@Component
@ConfigurationProperties(prefix = "student")
public class Student {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
备注:使用@ConfigurationProperties,需要配置一个prefix (前缀) 参数, 即写上 key 就可以了
2.3 使用 @Environment
实际项目开发中并未使用到本方法
test:
msg: aaa
代码:
@Autowired
private Environment env
@RequestMapping(value = "index2", method = RequestMethod.GET)
public String index2() {
System.out.println(env.getProperty("test.msg"));
return "The Way 2 : "+ env.getProperty("test.msg");
}