文章目录

  • 一. Springboot配置文件类型
  • 1. properties
  • 2. yml
  • 3. yaml
  • 4. 三种配置文件类型加载优先级
  • 二. 配置文件位置加载优先级
  • 1. 等级一
  • 2. 等级二
  • 3. 等级三
  • 三. 自定义配置文件
  • 1. 第一种方式
  • 2. 第二种方式
  • 四. IDEA配置文件不识别解决方法



一. Springboot配置文件类型

在了解Springboot配置文件的加载优先级之前,有必要先了解一下Springboot给我们提供的几种可用的配置文件类型,这样才更有利于各位读者朋友对后文的理解。

1. properties

首先是Springboot提供的properties类型的配置文件的。
对应配置文件名:

application.properties

配置书写格式:

server.port=80

2. yml

yml也是Springboot提供的配置文件类型,是目前企业开发中比较流行的一种配置文件编写格式。
对应配置文件名:

application.yml

配置书写格式:

server:
	port: 81

注意: 配置中:后存在一个空格不能省略

3. yaml

yaml也是Springboot提供的配置文件类型。
对应配置文件名:

application.yaml

配置书写格式:

server:
	port: 82

注意: 配置中:后存在一个空格不能省略

4. 三种配置文件类型加载优先级

当三种类型的配置文件同在同一模块的resources目录下时,优先级以下面列表为例,从高到低排列。

  • properties
  • yml
  • yaml

当然这只是配置的加载优先级,当三种类型的配置文件同在时,他们的配置内容并存叠加并相互覆盖,相同的配置属性以上方的加载优先级为主。

二. 配置文件位置加载优先级

1. 等级一

在开发的过程中,我们开发完毕准备交付,那么就得修改我们本地测试的配置文件,但是这样过于复杂,所以Springboot给我们提供了更好的解决方案。

可以在我们项目的resources目录下创建一个新的目录,目录名为:config

java springboot 先进先出 list springboot yml优先级_intellij idea


我们可以将新的配置文件存储在这个新创建的config目录中,存放在这个目录中的配置文件的权重将会比直接存放在resources目录下的配置文件权重高,当配置属性冲突时以config中的配置文件内容为主。

2. 等级二

对于涉密等级高的配置,需要交付后由客户配置,那么我们可以将打包好的jar模块放在一个目录下,然后由客户编写好配置文件将其放在同一个目录下面

java springboot 先进先出 list springboot yml优先级_spring boot_02


这样我们使用下面的命令启动这个jar包时

java -jar [jar包名]

这样启动jar包会自动读取我们配置文件的内容,这种配置文件的存放位置比上面config目录的权重要高,还是遵守惯例,相同的配置属性以权重高的配置为主,不相同的配置属性则两个配置文件的内容合并生效。

3. 等级三

如果有更加涉密的内容和不同的运维环境可以在jar包的存放目录再创建一个名为config的目录如下图所示,我们可以将新的配置文件存放在里面。

这样config目录中的配置文件权重将会大于和jar包同级的配置文件的权重,且jar包启动时也会读取其中的配置属性,还是按照惯例,相同的属性配置以权重高的为主,不同的配置属性则合并生效。

java springboot 先进先出 list springboot yml优先级_spring boot_03


通过这样的约定我们在服务器环境下可以给目录设置访问权限,起到配置保密的效果。

三. 自定义配置文件

抛开配置文件的类型,难道我们的文件名只能叫 application 吗? 难道不能叫别的文件名? 这样对系统的安全性和保密性并不是很友好,当然我们是可以对配置文件的文件名进行修改的,有两种方式都可以修改配置文件的文件名。

1. 第一种方式

向下面这样直接修改配置文件的文件名这样springboot并不能识别到。

java springboot 先进先出 list springboot yml优先级_spring boot_04


要进行相关的一些配置,第一种方式就是使用临时属性,启动项目时通过临时属性指定springboot的配置文件名

java –jar springboot.jar --spring.config.name=ebank

2. 第二种方式

除了上面直接使用临时属性指定文件名的方式还可以指定路径。
类路径方式指定:

java –jar springboot.jar --spring.config.location=classpath:/ebank.yml

全路径方式:

java –jar springboot.jar --spring.config.location=E:\test\测试\ebank.yml

在IDEA中可以指定临时属性,想要了解的朋友可以自行查询资料。

四. IDEA配置文件不识别解决方法

在日常开发中有时会因为IDEA的bug出现下面这种Springboot的配置文件未被IDEA识别到,配置文件的图标并不是一个绿叶子的样子,如下所示:

java springboot 先进先出 list springboot yml优先级_spring_05


遇到这种情况,点击IDEA界面右上角 【文件】然后点击 【项目结构】

java springboot 先进先出 list springboot yml优先级_maven_06


找到无法识别配置文件的模块 点击其上方的【+】选择 【Spring】添加

java springboot 先进先出 list springboot yml优先级_spring boot_07


添加完成后,点击右边Springboot标志的按钮

java springboot 先进先出 list springboot yml优先级_java_08


点击左上角的加号将未被识别的配置文件添加进去,然后保存退出即可

java springboot 先进先出 list springboot yml优先级_spring_09


如果不小心将初始化的配置文件删除,也可以利用上面的方法解决。