SpringBoot之Yaml学习

简介: SpringBoot的配置文件除了支持application.properties文件格式还支持application.yaml格式的配置文件。

前言


SpringBoot的配置文件除了支持application.properties文件格式还支持application.yaml格式的配置文件。


YAML (YAML Aint Markup Language)是一种标记语言,通常以.yml为后缀的文件,是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,比json、xml和等更适合做配置文件。


Yaml语法结构


Yaml基本语法如下:


1、使用缩进表示层级关系


2、大小写敏感


3、缩进不允许使用tab,只允许空格


4、缩进的空格数不重要,只要相同层级的元素左对齐即可


5、字符串无需加引号,如果要加,''与""表示字符串内容 会被 转义/不转义


6、key: value;kv之间有空格


Yaml数据结构


Yaml文件支持三种数据结构:


1、字面量:普通的值(数字,字符串,布尔)


key: value:字面直接来写;


字符串默认不用加上单引号或者双引号;


"":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思


name:   "李青 \n 亚索":输出:李青       亚索


'':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据


name: ‘李青 \n 亚索’:输出:李青 \n  亚索


2、对象:key-value键值对的集合


key: value:在下一行来写对象的属性和值的关系,需要进行缩进


对象还是key: value的方式


friends:         
    lastName: zhangsan         
    age: 20
复制代码


行内写法:


friends: {lastName: zhangsan,age: 18}
复制代码


3、数组:一组按次序排列的值(List、Set):


使用- 值表示数组中的一个元素


pets:  
    - cat  
    - dog  
    - pig
复制代码


数组行内写法:


pets: [cat,dog,pig]
复制代码


示例


1、在SpringBoot项目中声明一个person实体类和Phone实体类:


@Data
@ToString
@Component
//读取配置文件中以person开头的配置
@ConfigurationProperties(prefix = "person")
public class Person {
    private String userName;
    private Boolean boss;
    private Date birth;
    private Integer age;
    private Phone phone;
    private String[] interests;
    private List<String> animal;
    private Map<String, Object> score;
    private Set<Double> salarys;
    private Map<String, List<Phone>> allPhones;
}
复制代码


@Data /*自动添加getter、setter方法,需要引入lombok依赖*/
@ToString
public class Phone {
    private String band;
    private Double price;
}
复制代码


2、在pom文件中引入spring-boot-configuration-processor依赖,这样自定义的类和配置文件就可以和默认配置一样可以绑定提示。


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


3、上述依赖只是为了方便开发,适用于开发环境,所以可以在打包的时候不将其进行打包,在pom文件build节点加入下面配置,不加也可以,没有影响,只是会影响打包的大小和速度:


<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>
复制代码


4、然后在application.yml文件中写入Person的yaml格式的配置:


person:
#  单引号会将\n作为字符串输出,双引号会将\n换行输出:所以双引号不会进行转义,而单引号会转义,因为\n本来就是转义换行的意思
#  -n表示N大写,等同于userName
  user-name: 张三
  boss: true
#  默认时间格式是/
  birth: 2020/12/29
  age: 18
  phone:
    band: 华为
    price: 6000.00
#  interests: [篮球,足球]等同于下面格式
#    -代表一个元素
  interests:
    - 篮球
    - 足球
    - 18
    - 175158455
  animal: [猫,狗]
#  score: {english:80,math:90}
  score:
    english: 80
    math: 90
  salarys:
    - 9999.98
    - 9999.99
  allPhones:
    china:
      - {band: 华为,price: 6000.00}
      - band: 小米
        price: 5000.98
      - band: oppo
        price: 4000.36
    America: [{band: Iphone,price: 7000.23},{band: nokia,price: 4002.36}]
复制代码


5、写一个controller类进行测试:


@RestController
public class YamlController {
    @Autowired
    private Person person;
    @RequestMapping("/person")
    public Person returnPerson(){
        return  person;
    }
}
复制代码


启动程序,浏览器地址栏输入:http://localhost:8081/share/person,输出以下结果:


微信截图_20220521201714.png

总结

以上就是yaml简单的学习,yaml格式文件在开发中使用比较广泛,它比properties文件更加直观,清楚,尤其非常适合用来做以数据为中心的配置文件。在springboot的配置中如果application.properties文件和application.yml文件同时存在,那么都会生效,如果两个文件中对同一配置进行设置,则会以properties文件为准。application.yml也可以写成application.yaml。


如有任何问题或者不对的地方欢迎一起交流讨论学习!

目录
相关文章
|
3月前
|
Java 数据库连接 Maven
springBoot:项目建立&配置修改&yaml的使用&resource 文件夹(二)
本文档介绍了如何创建一个基于Maven的项目,并配置阿里云仓库、数据库连接、端口号、自定义启动横幅及多环境配置等。同时,详细说明了如何使用YAML格式进行配置,以及如何处理静态资源和模板文件。文档还涵盖了Spring Boot项目的`application.properties`和`application.yaml`文件的配置方法,包括设置数据库驱动、URL、用户名、密码等关键信息,以及如何通过配置文件管理不同环境下的应用设置。
338 1
|
2月前
|
前端开发 Java 开发者
Spring生态学习路径与源码深度探讨
【11月更文挑战第13天】Spring框架作为Java企业级开发中的核心框架,其丰富的生态系统和强大的功能吸引了无数开发者的关注。学习Spring生态不仅仅是掌握Spring Framework本身,更需要深入理解其周边组件和工具,以及源码的底层实现逻辑。本文将从Spring生态的学习路径入手,详细探讨如何系统地学习Spring,并深入解析各个重点的底层实现逻辑。
71 9
|
3月前
|
Kubernetes 应用服务中间件 nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
|
3月前
|
前端开发 Java 数据库
SpringBoot学习
【10月更文挑战第7天】Spring学习
45 9
|
2月前
|
Java Kotlin 索引
学习Spring框架特性及jiar包下载
Spring 5作为最新版本,更新了JDK基线至8,修订了核心框架,增强了反射和接口功能,支持响应式编程及Kotlin语言,引入了函数式Web框架,并提升了测试功能。Spring框架可在其官网下载,包括文档、jar包和XML Schema文档,适用于Java SE和Java EE项目。
36 0
|
3月前
|
XML Java 数据格式
Spring学习
【10月更文挑战第6天】Spring学习
29 1
|
3月前
|
Java 测试技术 开发者
springboot学习四:Spring Boot profile多环境配置、devtools热部署
这篇文章主要介绍了如何在Spring Boot中进行多环境配置以及如何整合DevTools实现热部署,以提高开发效率。
116 2
|
3月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
299 1
|
3月前
|
Java API Spring
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中拦截器的入门教程和实战项目场景实现的详细指南。
41 0
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
|
3月前
|
Java API Spring
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中过滤器的基础知识和实战项目应用的教程。
46 0
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现