1.1.4、SpringBoot配置

一、配置文件分类

  1. SpringBoot是基于约定的,所以很多配置有默认值,如果想要替换成自己的,可以通过application.propertiesapplication.yml(application.yaml)进行配置;

  2. 配置文件的基础样式

    1. application.properties

       server.port=80
    2. application.yml(yaml)

       server:
           port: 80

      注意:值与冒号(:)之间有空格

  3. properties、yml以及yaml的加载优先级

    如果以上三种配置文件都存在,而且都存在相同的配置,那么有效的配置是有优先级的,高优先级的覆盖低优先级的配置

    properties > iml > yaml

二、yaml基础语法

  1. yaml全名YAML Ain't Markup Language。是一种直观的能够被电脑识别的数据数据序列化格式,并且容易被人阅读,容易和脚本语言交互的,可以被支持yaml库的不同编程语言程序导入的;yml文件是以数据为核心的,比传统的xml方式更加简洁。后缀名可以是yml,也可以是yaml;

  2. 对应配置文件对比:

    1. properties

       server.port=80
       server.address=127.0.0.1
    2. xml

       <server>
           <port>80</port>
           <address>127.0.0.1</address>
       </server>
    3. yml

       server:
           port: 80
           address: 127.0.0.1
  3. yaml基本语法

    1. 大小写敏感

    2. 数据值前面必须有空格,作为分割符

    3. 使用缩进表示层级关系

    4. 缩进时候不允许使用Tab键,只允许使用空格(不同操作系统Tab对应的空格数可能不同,从而导致层级混乱,如果设置相同,可以使用)

    5. 缩进的空格数目不重要,只要能保证相同层级的元素左侧对齐即可

    6. 表示注释,从这个字符开始,一只到这一行的最后,都会被解析器忽略

  4. yaml数据格式

    1. 对象(map):键值对的集合

      1. 默认的方式都是键值对

    2. 数组:一组按次序排列的值

       address:
           - beijing
           - shanghai
      
       # 行内写法
       address: [beijing,shanghai]
    3. 纯量写法:

       msg1: 'hello \n word' # 但引忽略转义字符
       msg2: "hello \n word" # 双引识别转移字符
  5. 参数引用

    使用${key}来进行引用:

     name: test
    
     system:
         name: ${name}

三、读取配置文件内容

  1. 读取配置文件内容的方式:(假定配置文件中的自定义配置key为name)

    1. @Value-注解

      备注:直接在代码中使用注解获取

    2. Environment-对象

    3. @ConfigurationProperties-注解

      1. 定义类,类中的参数名要与配置文件的内容相同

        注意:IDEA中,文件上面可能会出现报错,不影响!

        ​ 解决办法:在pom中添加部分依赖坐标即可,可以点击报错查看坐标具体内容,作用:先定义类,后写yml有提示

      2. 代码注入即可

四、profile(多环境切换)

  1. 因为开发,测试以及生产的对应环境相关配置不同,不可能每次打包时候都要修改,profile可以动态配置对应的环境

  2. 配置方式:

    1. 多profile文件的方式

      定义多个配置文件:application.properties、application-dev.properties、application-test.properties、application-pro.properties

      ​ 分别代表不同的环境:主环境、开发环境、测试环境、生产环境

      激活对应环境的方式:

      备注:yml也可以使用这种方式去定义

    2. yml多文档方式

      在yml中使用特定的符号去将代码分成多部分:

  3. 激活的方式:

    1. 配置文件:上面的内容包含了配置文件的激活环境方式

    2. 虚拟机参数:

      启动过程中,添加虚拟机参数(VM options):-Dspring.profiles.active=dev

      dev就是启动石斛定义的环境参数

    3. 命令行参数:

      启动过程中,使用命令修改启动参数(Program arguments):--spring.profiles.active=dev

    4. 启动命令可以成为:java -jar xxx.jar --spring.profiles.active=dev

五、内部配置加载顺序

  1. Spring启动时候会从以下位置读取配置文件:

    1. file:./config/ 当前项目下的/config目录下

    2. file:./ 当前项目的根目录

    3. classpath:/config/ classpath的/config目录

    4. classpath:/ classpath的根目录

  2. 加载顺序为上面文件的展示顺序,高优先级配置的属性会生效

六、外部配置加载顺序

  1. 可以查看官方文档:一共17个地方可以配置,官方介绍的顺序就是优先级高到低的顺序

  2. 简单介绍几个:

    1. 命令行配置:类似profile的命令行启动方式:java -jar xxx.jar --server.port=90 --server......很多配置

    2. 指定外部配置文件:命令行配置中,使用命令指定外部配置文件地址即可:java -jar xxx.jar --spring.config.location=地址

    3. 定义配置文件与jar包同目录,启动jar包即可(放在同目录下的config目录下依旧可以)

  3. 外部配置与内部配置形成互补配置,可以解决某些问题

Last updated

Was this helpful?