yaml 配置文件
已经开始了两个课程的springboot
了,不知道大家有没有注意到,我们新建的工程的resources
下面有个application.properties
文件,而我们本章所讲的是yaml
配置文件,两者有什么区别呢?别急,我们新建一个空的工程,看下application.properties
里面都有哪些内容。
是不是很熟悉,工程启动的8080端口是在这里配置的吗?大家可以试着改动将8080端口改为8081端口,然后启动工程,看下是在哪个端口启动的服务。
下面我们将application.properties改下文件后缀名,后缀名改为yaml文件。
重新启动项目,是不是也是在8081端口启动的?至此大伙知道yaml和properties文件的基本差别吧。
properties文件用.号标志变量层级,
yaml文件以:标志变量层级,并进行相应的缩进,文件编排更清晰。
ps:yaml文件的冒号后面要有个空格哦!!!
那yaml文件中的变量要怎么在java类中获取呢?
基础用法:
进阶用法:
对象
使用对象接收yaml里面的数据,yaml文件里面内容如下:
再看如何建立dto对象
建立一个dto
对象,接收yaml
里面的数据,其中private
变量的名字需与yml里面的名字一致。使用@ConfigurationProperties
标志该对象是映射yml文件中以哪个开头的变量 @Componet
标志该文件是一个组件类,这样才能让springboot
扫描到
最后看下rest
接口,通@Resoure
将user
对象注入进来
注意:使用改方法接收yaml
里面的变量,需在main
函数上增加注解@EnableConfigurationProperties
好了,启动项目,使用post面启动看下是不是将数据都正确接收了呢!
map
list数组
下面贴出来controller的源码:
@RestController
@RequestMapping("demo")
public class DemoController {
@Value("${name}")
private String name;
@Value("${age}")
private Integer age;
@Value("${birthday}")
private Date birthday;
@Resource
private User user;
@Value("${animals}")
private List<String> animals;
@GetMapping("method")
public void method(){
System.out.println("name=>"+name);
System.out.println("age=>"+age);
System.out.println("birthday=>"+birthday);
System.out.println(user.getName());
System.out.println(user.getAge());
System.out.println(user.getBirthday());
System.out.println("遍历animals:");
for (Object item : animals) {
System.out.println(item);
}
System.out.println("遍历user对象中的animals:");
for (Object animal : this.user.getAnimals()) {
System.out.println(animal);
}
System.out.println("遍历user对象中的fruit:");
for (Object item : this.user.getFruit().keySet()) {
System.out.println(item+"->"+this.user.getFruit().get(item));
}
System.out.println("遍历user对象中的fruit1:");
for (Object item : this.user.getFruit1().keySet()) {
System.out.println(item+"->"+this.user.getFruit1().get(item));
}
}
}
小伙伴们,这个controller类应该用哪个地址访问呢,还记得上一张的内容吗?评论区见答案!