zoukankan      html  css  js  c++  java
  • SpringBoot配置文件yaml文件的用法 & 自定义类绑定的配置提示

    配置文件我们在之前用properties作为配置文件,SpringBoot还兼容另外一种配置文件格式-yaml

    只要有全局配置文件,不管是appilcation.properties还是application.yml,哪怕两个都有,都会生效,这两个合并起来一起生效

    1.文件类型

    1.1 properties

    同以前的properties

    1.2 yaml

    1.2.1 简介

    YAML 是 "YAML Ain't Markup Language"(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。

    非常适合用来做以数据为中心的配置文件

    1.2.2 基本语法

    • key: value;kv之间有空格
    • 大小写敏感
    • 使用缩进表示层级关系
    • 缩进不允许使用tab,只允许空格(idea中无所谓)
    • 缩进的空格数不重要,只要相同层级的元素左对齐即可
    • '#'表示注释
    • 字符串无需加引号,如果要加,''""表示字符串内容 会被 转义/不转义

    1.2.3 数据类型

    • 字面量:单个的、不可再分的值。date、boolean、string、number、null
    k: v
    
    • 对象:键值对的集合。map、hash、set、object 

    因为对象里面都有属性

    两种写法:

      • 行内写法
    k: {k1:v1,k2:v2,k3:v3}
      • 对象表示法
    k: 
      k1: v1
      k2: v2
      k3: v3
    
    • 数组:一组按次序排列的值。array、list、queue

     

     案例:

      

    Person.java

    package com.huawei.boot.bean;
    
    import lombok.Data;
    import lombok.ToString;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    import java.util.Date;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    @ConfigurationProperties(prefix = "person")
    @Component  // 在类上加上该注解,代表是容器中的组件了
    @ToString
    @Data
    public class Person {
        private String userName;
        private Boolean boss;
        private Date birth;
        private Integer age;
        private Pet pet;
        private String[] interests;
        private List<String> animal;
        private Map<String, Object> score;
        private Set<Double> salarys;
        private Map<String, List<Pet>> allPets;
    }
    

      Pet.java

    @ToString
    @Data
    public class Pet {
        private String name;
        private Double weight;
    }
    

      HelloController.java

    package com.huawei.boot.Controller;
    
    import com.huawei.boot.bean.Person;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class HelloController {
    
        @Autowired
        Person person;
    
        @RequestMapping("/person")
        public Person person () {
            return person;
        }
    }
    

      Boot01Helloworld2Application.java

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class Boot01Helloworld2Application {
    
        public static void main(String[] args) {
    
            SpringApplication.run(Boot01Helloworld2Application.class, args);
        }
    
    }
    

      application.yml

    person:
      userName: zhangsan
      boss: true
      birth: 2019/12/9
      age: 19
    #  interests: [篮球,足球]
      interests:
        - 篮球
        - 羽毛球
        - 橄榄球
      animal: [阿猫, 阿狗]
      score:
        english: 80
        math: 90
      salarys:
        - 999.98
        - 999.99
      pet: {name: 阿狗, weight: 99.89}
      allPets:
        sick:
          - {name: tom, weight: 44.22}
          - {name: jerry, weight:33.33}
          - name: 啊猫
            weight: 92.33
          - name: 啊虫
            weight: 77.77
        health:
          - {name: 阿花, weight: 199.55}
          - {name: 啊明, weight: 111.11}

     启动服务器后,浏览器中:

    通过@ConfigurationProperties(prefix = "person")可以将Person类与application.yml绑定起来

    @ConfigurationProperties的作用:

    将配置文件中配置的每一个属性的值,映射到这个组件中,告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定。

    参数prefix="person":将配置文件中的person下面的所有属性一一对应

    只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能,因此要加上@Component,表明注册bean

    2.自定义类绑定的配置提示

    自定义的类和配置文件绑定一般没有提示,下面实现在yml中写的时候,能自动提示

    在pom.xml中加入

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>

    重启一下

    在application.yml中,写的时候,就会有提示了

     在开发期间,我们有提示了,但是在开发完成后,在我们SpringBoot的打包插件中重新打包的时候,不要把配置处理器打包到jar包中

    再在pom.xml中添加:

    <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <excludes>
                            <exclude>
                                <groupId>org.springframework.boot</groupId>
                                <artifactId>spring-boot-configuration-processor</artifactId>
                            </exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
     </build>

     加载指定的配置文件,即文件名不是application.properties可以用下面的方法

    在application.yml中使用随机符号

     

     注意

    配置文件如果用application.properties在写中文的时候,会有乱码,我们需要去IEDA中设置编码格式为UTF-8

  • 相关阅读:
    python活力练习Day13
    检测一个字符串在另外一个字符串中的位置
    Python活力练习Day12
    Python多进程与单进程效率对比
    HTML-Note
    Python判断自定义的参数格式是否正确
    图片的灰与彩
    Git常用命令
    Linux 单引号和双引号的区别
    类函数中获取进程池对象的地址
  • 原文地址:https://www.cnblogs.com/GumpYan/p/14358622.html
Copyright © 2011-2022 走看看