简简单单搞懂 yaml 配置文件

yaml 配置文件

已经开始了两个课程的springboot了,不知道大家有没有注意到,我们新建的工程的resources下面有个application.properties文件,而我们本章所讲的是yaml配置文件,两者有什么区别呢?别急,我们新建一个空的工程,看下application.properties里面都有哪些内容。
简简单单搞懂 yaml 配置文件

是不是很熟悉,工程启动的8080端口是在这里配置的吗?大家可以试着改动将8080端口改为8081端口,然后启动工程,看下是在哪个端口启动的服务。
简简单单搞懂 yaml 配置文件

下面我们将application.properties改下文件后缀名,后缀名改为yaml文件。
简简单单搞懂 yaml 配置文件

重新启动项目,是不是也是在8081端口启动的?至此大伙知道yaml和properties文件的基本差别吧。

properties文件用.号标志变量层级,

yaml文件以:标志变量层级,并进行相应的缩进,文件编排更清晰。

ps:yaml文件的冒号后面要有个空格哦!!!

那yaml文件中的变量要怎么在java类中获取呢?

基础用法:

简简单单搞懂 yaml 配置文件

进阶用法:

对象

使用对象接收yaml里面的数据,yaml文件里面内容如下:
简简单单搞懂 yaml 配置文件

再看如何建立dto对象
简简单单搞懂 yaml 配置文件

建立一个dto对象,接收yaml里面的数据,其中private变量的名字需与yml里面的名字一致。使用@ConfigurationProperties标志该对象是映射yml文件中以哪个开头的变量 @Componet标志该文件是一个组件类,这样才能让springboot扫描到
简简单单搞懂 yaml 配置文件

最后看下rest接口,通@Resoureuser对象注入进来
简简单单搞懂 yaml 配置文件

注意:使用改方法接收yaml里面的变量,需在main函数上增加注解@EnableConfigurationProperties

好了,启动项目,使用post面启动看下是不是将数据都正确接收了呢!

map

简简单单搞懂 yaml 配置文件

list数组

简简单单搞懂 yaml 配置文件

下面贴出来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类应该用哪个地址访问呢,还记得上一张的内容吗?评论区见答案!

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

关注我们