当前位置:   article > 正文

06全局配置文件application.yaml详解_application.yml

application.yml

       Spring Boot 提供了大量的自动配置,极大地简化了spring 应用的开发过程,当用户创建了一个 Spring Boot 项目后,即使不进行任何配置,该项目也能顺利的运行起来。当然,用户也可以根据自身的需要使用配置文件修改 Spring Boot 的默认设置。

       SpringBoot 默认使用以下 2 种全局的配置文件,其文件名是固定的。

  • application.properties
  • application.yml

       application.properties与 application.yaml都可以作为Spring Boot的配置文件,只是书写格式不同而已,在 Spring Boot 启动时被自动读取。当然也可以同时使用,但同级目录下读取的顺序是先读取application.properties,读取application.yaml。该配置文件的存放路径如下图所示。

       本节我们将详细介绍 application.properties的语法及使用。

YAML 简介

       YAML 全称 YAML Ain't Markup Language,它是一种以数据为中心的标记语言,比 XML 和 JSON 更适合作为配置文件。YAML文件格式是Spring Boot支持的一种JSON超集文件格式。相较于传统的Properties配置文件,YAML文件以数据为核心,是一种更为直观且容易被电脑识别的数据序列化格式。application.yaml文件的工作原理和application.properties一样。

       想要使用 YAML 作为属性配置文件(以 .yml 或 .yaml 结尾),需要将 SnakeYAML 库添加到 classpath 下,Spring Boot 中的 spring-boot-starter-web 或 spring-boot-starter 都对 SnakeYAML 库做了集成, 只要项目中引用了这两个 Starter 中的任何一个,Spring Boot 会自动添加 SnakeYAML 库到 classpath 下。

       下面是一个简单的 application.yml 属性配置文件。

  1. server:
  2. port: 8081

YAML 语法

YAML 的语法如格式:

key: value

示例代码

server:

    port: 8081

    path: /hello

YAML 的语法如下:

  • 使用缩进表示层级关系。
  • 缩进时不允许使用 Tab 键,只允许使用空格。
  • 缩进的空格数不重要,但同级元素必须左侧对齐。
  • 大小写敏感。
  • 字符串无需加引号,如果要加,''与""表示字符串内容 会被 转义/不转义

例如:

  1. spring:
  2. profiles: dev
  3. datasource:
  4. url: jdbc:mysql://127.0.01/banchengbang_springboot
  5. username: root
  6. password: root
  7. driver-class-name: com.mysql.jdbc.Driver

类准备:


注意:使用需要添加依赖

<dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
     <optional>true</optional>
 </dependency>

 User类:

  1. @Data
  2. @AllArgsConstructor
  3. @Component
  4. @ConfigurationProperties(prefix = "user")
  5. public class User {
  6. private String username;
  7. private Integer age;
  8. private Book book;
  9. private Date birth;
  10. private String[] hobby;
  11. private List<String> booksName;
  12. private Map<String, Object> books;
  13. private Set<Double> salary;
  14. public User() {
  15. System.out.println("创建user bean");
  16. }
  17. }

测试类:

  1. @SpringBootApplication
  2. public class SpringbootApplication {
  3. public static void main(String[] args) {
  4. //1、返回IOC容器
  5. ConfigurableApplicationContext run = SpringApplication.run(SpringbootApplication.class, args);
  6. User user =run.getBean("user",User.class);
  7. System.out.println(user.getUsername());
  8. System.out.println(user);
  9. }
  10. }

YAML 常用写法

YAML 支持以下三种数据结构:

  • 对象:键值对的集合
  • 数组:一组按次序排列的值
  • 字面量:单个的、不可拆分的值
  • 字符串无需加引号,如果要加,''与""表示字符串内容 会被 转义/不转义

YAML文件中的value值类型不同,写法不同。 

YAML 字面量写法

      字面量是指单个的,不可拆分的值,例如:数字、字符串、布尔值、以及日期:date、boolean、string、number、null等。
      在 properties中,使用“key[=]value的形式表示一对键值对(空格不能省略),如 user.username= "xiatian",user.age= 32。

user.username=xiatian is good

user.age=32

user.birth=2020/09/10 13:14:15

单引号与双引号区别:

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

user.username="xiatian \n is good"

输出结果为:

  • xiatian
  • is good

单引号:对字符串里面的特殊字符进行转义,特殊字符最终只是一个普通的字符串数据

user.username= 'xiatian \n is good'

输出结果为:xiatian \n is good

测试结果分别如下:

YAML 对象、数组、List、Map、Set的行内写法与缩进写法 

       在 YAML 中,对象可能包含多个属性,每一个属性都是一对键值对。
YAML 为对象提供了 2 种写法:缩进式写法、行内式写法,但注意,无论是缩进写法还是行内写法,冒号后都必须有一个空格

  • 行内写法

user对象 行内写法:注意冒号后空格

user: {
  username: xiatian is good,
  age: 32,
  birth: 2020/09/10 13:14:15,

  # book对象 行内写法:注意冒号后空格

  book: {bookName: springboot , bookPrice:102},

  # 数组 行内写法:注意冒号后空格

  hobby: [篮球,足球,排球],

  # List 行内写法:注意冒号后空格
  booksname: [计算机基础,javaEE框架,springboot],

  # Map 行内写法:注意冒号后空格
  books: {key1: spring, key2: springmvc, key3: springboot,key4: springcloud,
          chinese: {0: 活着, 1: 孙子兵法,  2: 诗经, hz: 活着, szbf: 孙子兵法, sj: 诗经}},

  # Set 行内写法:注意冒号后空格
  salary: [6000,7000,8000]
}

  • 缩进写法

user对象 缩进写法:注意冒号后空格

user:
  username: 'xiatian is good'
  age: 32
  birth: 2020/09/10 13:14:15
  book:
    bookName: springboot
    bookPrice: 102
  hobby:
    - 篮球
    - 足球
    - 排球
  booksname:
    - 计算机基础
    - javaEE框架
    - springboot
  books:
    key1: spring
    key2: springmvc
    key3: springboot
    key4: springcloud
    chinese:
      0: 活着
      1: 孙子兵法
      2: 诗经
      hz: 活着
      szbf: 孙子兵法
      sj: 诗经
  salary:
    - 6000
    - 7000
    - 8000

  • 行内与缩进写法结合

user:
  username: 'xiatian is good'
  age: 32
  birth: 2020/09/10 13:14:15
  book:
    bookName: springboot
    bookPrice: 102
  hobby: [篮球,足球,排球]
  booksname: [计算机基础,javaEE框架,springboot]
  books:
    key1: spring
    key2: springmvc
    key3: springboot
    key4: springcloud
    chinese:
      0: 活着
      1: 孙子兵法
      2: 诗经
      hz: 活着
      szbf: 孙子兵法
      sj: 诗经
  salary: [6000,7000,8000]

测试结果如下:

User(

    username=xiatian is good,

    age=32,

    book=Book{bookName='springboot', bookPrice=102.0},

    birth=Thu Sep 10 13:14:15 CST 2020,

    hobby=[篮球, 足球, 排球],

    booksName=[计算机基础, javaEE框架, springboot],

    books={

     chinese={

       key1=spring,

       key2=springmvc,

       key3=springboot,

       key4=springcloud,

       0=活着,

       1=孙子兵法,

       2=诗经,

       hz=活着,

       szbf=孙子兵法,

       sj=诗经}

    },

    salary=[6000.0, 7000.0, 8000.0]

);
 

YAML 组织结构

      一个 YAML 文件可以由一个或多个文档组成,文档之间使用“---作为分隔符,且个文档相互独立,互不干扰。如果 YAML 文件只包含一个文档,则“---分隔符可以省略。

  1. ---
  2. 代表第一个yml文档中缩进写法
  3. website:
  4. name: bianchengbang
  5. url: www.biancheng.net
  6. ---
  7. 代表第二个yml文档中缩进写法和行内写法都有
  8. website: {name: bianchengbang,url: www.biancheng.net}
  9. pets:
  10. -dog
  11. -cat
  12. -pig
  13. ---
  14. 代表第三个yml文档中缩进写法和字面量写法
  15. pets: [dog,cat,pig]
  16. name: "zhangsan \n lisi"
  17. ---
  18. 代表第四个yml文档中是字面量写法
  19. name: 'zhangsan \n lisi'

07Spring Boot配置绑定

https://blog.csdn.net/qq_41946216/article/details/124771388?spm=1001.2014.3001.5501

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/953734
推荐阅读
相关标签
  

闽ICP备14008679号