概述
yaml文件是Spring官方推荐书写配置文件的格式,其易读性和简洁性都强于普通的Properties文件。
普通的Properties文件采用key=value
方式,而yaml文件采用key: value格式
,注意这里的key和value之间有一个空格。
举例来说
例1(这个例子摘自官网)
#普通Properties文件格式
environments.dev.url=http://dev.example.com
environments.dev.name=Developer Setup
environments.prod.url=http://another.example.com
environments.prod.name=My Cool App
#yaml文件格式
environments:
dev:
url: http://dev.example.com
name: Developer Setup
prod:
url: http://another.example.com
name: My Cool App
从上面不难看出,使用yaml格式之后,可以省去很多重复项,整个文件看起来更具有结构性
除了代替普通Properties文件的作用之外,还可以在yaml文件中直接写想要注入的相关属性,比如下面例子:
例2
person:
name: zhansan
age: 23
sex: 男
likes:
- book
- movie
- girl
在有了上述yaml文件之后,我们可以在项目中写一个Person的pojo类,如下:
public class Person {
private String name;
private int age;
private String sex;
private List<String> likes;
public Person(){}
public Person(String name, int age, String sex, List<String> likes) {
this.name = name;
this.age = age;
this.sex = sex;
this.likes = likes;
}
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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public List<String> getLikes() {
return likes;
}
public void setLikes(List<String> likes) {
this.likes = likes;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + ''' +
", age=" + age +
", sex='" + sex + ''' +
", likes=" + likes +
'}';
}
}
有了上述pojo后,现在我们可以有两种方式完整对Person类属性的注入,第一种是采用 @ConfigurationProperties 注解,第二种是采用 @Value 注解。
采用 @ConfigurationProperties 注解
我们只需在类上加上该注解即可,在值里填上对应yaml文件里相关配置的根元素的值
@ConfigurationProperties(value = "person")
@Component
public class Person {
...
}
可以在test文件夹(当前是Maven项目)中进行测试
@SpringBootTest
class SpringBootLearningApplicationTests {
@Autowired
Person person;
@Test
void contextLoads() {
System.out.println(person.toString());
}
}
结果如下,已经注入成功:
采用 @Value 注解
采用 @Value 在属性很多的时候会显得极为不便,其中还需使用SpEl表达式(Spring Expression Language)
@Value("${person.name}")
private String name;
@Value("${person.age}")
private int age;
private String sex;
private List<String> likes;
这里给出使用 @ConfigurationProperties 注解和 @Value 注解的具体区别(图片来自网络)
关于yaml还有一个小点需要注意,就是当一个项目中有多个yaml文件时,各个yaml文件存在优先级,按照从高往低的优先级顺序,yaml文件按照存放位置的不同有如下优先级:
- file: ./config/
- file: ./
- classpath: /config/
- classpath: /
在Maven项目中,.就是当前目录线,classpath就是resources目录下,如图:
最后
以上就是高大康乃馨为你收集整理的Spring Boot——yaml配置文件快速上手的全部内容,希望文章能够帮你解决Spring Boot——yaml配置文件快速上手所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复