SpringBoot 02 ~ 配置文件

我们在创建好的SpringBoot项目中看到有一个文件,那就是application.properties,这就是SpringBoot的一种参数配置文件,主要用来配置SpringBoot运行的一些参数的,另外一种就是比我们之前见过的任何常用的格式都要精简明了的以数据做为中心的YMAL了;除了参数配置类,还有就是SpringBoot已经淘汰了xml的实体注入方式,改用配置类解决实体类注入容器的问题;

一、YMAL

  1. YMAL简介

    • YMAL文件一般使用的后缀是:yml/yaml;
    • YMAL文件从内容上说无比的简明扼要,从出发点上说完全以数据为中心;
    • 相比于之前的JSON,也是各有优缺点,我只提我认为最重要的一点:那就是JSON适合网络传输数据,YAML适合本地配置;
      • 为何呢?我们知道一般的我们网络传输数据的时候为了使得传输的数据尽量的小,都会把空格干掉;这下你明白了,YAML在设计的时候正是利用了约定大于规范以数据为中心这两大准则,正是两大准则,使得YAML严格使用空格缩进来表明数据的归属关系,如果干掉这些空格回车之类,还能轻松复原吗?再想想JSON,嗯,豁然开朗,嗯!
  2. YAML语法
    看到一篇写的比较好的博客,就贴在这里;

    • 语法总结
      • 使用缩进表示层级关系;
      • 缩进时不允许使用Tab键,只允许使用空格;缩进的空格数目不重要,只要相同层级的元素左侧对齐即可;
      • 大小写敏感;
      • 键值基本单元:: ,注意在冒号后面有个空格,嘿嘿,哥们我又这个强迫症!!!
      • 字符串带双引号和单引号意义不一样,而且一般我们不用写引号:
        ✔ 双引号:不转义特殊符号;
        ✔ 单引号:转义特殊符号;
    • YAML 支持的三种数据结构
      • 字面量:单个的、不可再分的值;
      • 集合:一组按次序排列的值;
        ✔ 行内:
        gray: [red, green, blue]
        
        ✔ 多行:
        gray: 
            - red
            - green
            - blue
        
      • 对象/Map:键值对的集合:
        • 行内:部分类似JSON的写法,只是字符串没有必要添加引号:
          person: {name: shreker, age: 18, gender: 帅的一枚}
          
        • 多行:换行缩进的部分就是头部的子数据:
          person: 
              name: shreker
              age: 18
              gender: 帅的一枚
          
  3. YAML用法

    • 编写YAML文件;
    • 在对应的类上添加注解@ConfigurationProperties(prefix=""),这个配置默认会在application.yml中查找,如果想要读取指定的配置文件,那就使用@PropertySource,而且需要引用一个依赖:
      
          org.springframework.boot
          spring-boot-configuration-processor
          true
      
      
    • 记得把这个Bean加入容器;

二、配置类

  1. 简介
    • 老项目结构的开发中,我们配置了多个Spring的配置文件,这些配置文件需要引入到总的配置文件中,然后配置在web.xml中;SpringBoot中我们怎么配置呢?
    • 当然SpringBoot已经抛弃了XML这种做法,但是如果你硬是要这么做,SpringBoot已经为你这种人(…φ(๑˃∀˂๑)♪ 学习是我的全部)准备好了,只需要在SpringBoot的主启动类上添加注解@ImportResource(locations={"classpath:"})即可;
    • 正儿八经的做法实际上是配置类,具体的用法参考我的这篇文章,我也是持续更新的,发现新的东西就会贴上去的;

三、properties和yml通用的特性

  1. 可以在properties文件或者yml文件中使用${}的方式获取值或者Spring提供的随机数:
    • 随机数可以有:${random.value}、${random.int}、${random.long}
      ${random.int()}、${random.int[,]};
    • 获取自己之前定义的值:
      employee: 
          username: ${random.uuid}
          other: ${username}-name
      
    • 当获取不到值的时候也可以提供默认值:${:}

四、参数配置文件的位置

  1. 默认情况下,参数配置文件可以放置在如下四个位置上,而且优先级依次递减:
    • /config/
    • /
    • //config/
    • //
  2. 个人还是比较喜欢第三个位置,即:/config/
  3. 上面这几个位置如果同时存在,那么都加载,而且同一个配置前面的覆盖后面的配置;
  4. 老项目结构中,这些配置文件都是要编写在web.xml中的,现在SpringBoot使用了默认加载位置扫描的方式;
  5. 同样的,如果项目已经打包,我们需要更改配置,只要在jar -jar运行项目的时候添加参数--spring.config.location=即可覆盖已经打包进jar中的参数配置;
  6. 关于配置文件的加载,还有非常多的内容,特别是外部参数配置文件,详情请看官网;

五、SpringBoot配置参数

  1. SpringBoot的配置参数相当多,我就不贴在这里了,详情请参考官网,这里只写出一些比较常用的
  2. SpringBoot的自动配置
    • 默认情况下,SpringBoot开启了自动配置,本质上就是给容器中添加了很多的组件,但并不是每个都能生效,我们可以在参数中添加debug=true的方式让SpringBoot帮我们检查,从而生成一个报告;

你可能感兴趣的:(SpringBoot 02 ~ 配置文件)