springboot 的配置文件加载顺序

SpringBoot系列文章目录

SpringBoot知识范围-学习步骤【JSB系列之000】

目录

SpringBoot系列文章目录

本文内容

SpringBoot - 配置文件application.yml

1,基本介绍

2,YAML 配置与 Properties 配置的比较

3 , 常规配置

YAML 简介

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

YAML 位置

第一个位置

第二个位置

其它位置


详细学习可以进入:

SpringBoot知识范围-学习步骤【思维导图】

统一的系列的环境及版本:

环境win11
工具idea 2017
jdk1.8
数据库mysql5.5
maven3.2.1
项目导入方式maven 导入
数据库前端工具mysql-front (navicat 也可以)

本文内容

本文来讲述一下,application.yml 或application.yaml 文件,可以放在哪里,并且如果有两个地方都有文件,那么谁的优先权更大

SpringBoot - 配置文件application.yml

1,基本介绍

(1)YAML 是 JSON 的超集,简洁而强大,是一种专门用来书写配置文件的语言,可以替代 application.properties。

(2)在创建一个 SpringBoot 项目时,引入的 spring-boot-starter-web 依赖间接地引入了 snakeyaml 依赖, snakeyaml 会实现对 YAML 配置的解析。

(3)YAML 的使用非常简单,利用缩进来表示层级关系,并且大小写敏感。

2,YAML 配置与 Properties 配置的比较

  • 可以使用 @PropertySource 注解加载自定义的 Properties 配置文件,但无法加载自定义的 YAML 文件。
  • YAML 支持列表的配置,而 Properties 不支持。

3 , 常规配置

(1)在 Spring Boot 项目中使用 YAML 只需要在 resources 目录下创建一个 application .yml 文件即可,这里我们添加如下配置:

    有了 application .yml 后我们可以将 resources 目录下的 application.properties 文件删除(当然保留也没问题),完全使用 YAML 完成文件的配置。
    注意:application.properties 的优先级会比 application.yml 高,也就是说如果两个文件都存在,且两个文件都配置了同一个属性,那么会以 application.properties 里的配置为准。

server:
  port: 8081
  servlet:
    context-path: /hangge
  tomcat:
    uri-encoding: utf-8
  • 其等效于 application.properties 中的如下配置:
server.port=8081
server.servlet.context-path=/hangge
server.tomcat.uri-encoding=utf-8

当内容比较少的时候,可能properties 文件更容易一些。而且他没有缩进的语法,容错性要好,适合初学者。

在后面的章节当中也有,很多的yml 或 properties 文件。​
SpringBoot的配置文件有.properties和.yml两种形式,两种配置文件的效果类似,只不过是格式不同而已

1、当properties和yml同时存在时,properties的优先级会比yml高

2、两种文件都是用#注释

3、yml的优点在于可以省去一下重复代码

4、在properties文件里面的 “ .”  连接在yml文件里面全部换成 ":" 进行连接,并且每一级之间必须换行,在第二级开始应该进行一个Tab键的缩进,如果是同级的就不需要进行缩进

5、在yml文件里面如果是需要进行赋值那么必须是要在 ":" 后面进行一个空格键的缩进

6、在yml文件里面所有的配置,相同级别只能出现一次,比如我们使用了spring这个级别,那么我们在后边进行spring级别的配置的时候就必须在这个地方进行,不能在写一个spring级别

图3: yml 格式

yml 优美!!但是自带语法。毕竟这是一种超JSON。目前还没有啥工具能给你错误指导。 适合熟练程序员。

properties 简单。成熟。有N多的工具可以检查,写错了,工具有提示,这一点就太适合初学者了

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 下。

YAML 的语法如下:

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

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对象 缩进写法:注意冒号后空格,这是缩进的写法。格式还是看“图3: yml 格式”吧。

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
 

YAML 位置

第一个位置

第一个配置文件位于 SRC平级目录:如下图所示

port: 8083 监听端口 

第二个位置

第二个配置文件位于config 目录下

监听端口为:8084

运行 此项目。

如果编译有错,刷新maven 文件。

所下图绿框所示。

 启动,看日志

 可以得知,config 下的配置文件起作用。

 当删除了config 目录下的配置文件之后。

其它位置

以此类推得到。

这样,我们在调试SpringBoot项目时就可以知道了配置文件的顺序

配套资源:

springboot 的配置文件加载顺序

https://download.csdn.net/download/dearmite/88220243

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

项目花园范德彪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值