文章目录

  • 前言
  • 一、application.xxx配置文件的读取优先级
  • 二、多环境配置介绍
  • 1.定义多个application.properties配置文件
  • 2.使用yaml方式指定激活配置文件



前言

本文通过一个简单的项目实例和运行结果, 来演示SpringBoot中application.xxx配置文件的读取优先级和多环境配置



一、application.xxx配置文件的读取优先级

懒得看的人, 我直接先上结论:

其实官网上给写的明明白白,就是下图那个优先级顺序:

spring boot body 读多次 springboot读取application_优先级


翻译成人话就是:

1.在项目的根路径下创建config目录, 然后里面有一个application.yaml文件(读取优先级最高)

2.直接在项目的根路径下创建application.yaml文件(读取优先级第二)

3.在src/main/resources下创建config目录, 然后里面有一个application.yaml文件(读取优先级第三)

4.在src/main/resources下创建application.yaml文件(这也是application.yaml的默认存放位置,读取优先级最低)

还不明白就看下图:

spring boot body 读多次 springboot读取application_application_02

二、多环境配置介绍

在实际开发中,项目可能会在各种不同环境下运行,比如开发环境、测试环境、生产环境,不同的环境有不同的配置,它们的配置文件也不同。其实在SpringBoot中,有两种方式配置多环境,下面我就介绍给大家。

1.定义多个application.properties配置文件

这种方式简单粗暴,只需要定义多个配置文件即可,每个不同的环境设置一个不同的配置文件。

spring boot body 读多次 springboot读取application_application_03


如果你想指定激活哪一个配置文件,那就在默认的application.properties中配置对应的环境。

假如你想激活测试环境,那么就添加:

spring.profiles.active=test 假如你想激活开发环境,那么就添加:

spring.profiles.active=dev

不过,并不推荐使用这种方式来做,因为SpringBoot支持更强大的yaml方式。

2.使用yaml方式指定激活配置文件

删除之前的application.properties配置文件,新建一个application.yaml,然后在其中添加如下代码

# “---” 就是yaml语法, 区分不同模块的分割线  下面的profiles: active: dev 的意思是, 选择激活哪个配置文件
spring:
  profiles:
    active: dev
---
# 开发环境配置文件的内容
spring:
  profiles: dev
---
# 测试环境配置文件的内容
spring:
  profiles: test

“- - -” 其实是yaml的语法,区分不同模块的分割线。
被区分的不同模块里,就存放了原先application-dev.properties和application-test.properties的内容。


这种做法可以不用写那么多配置文件,但是把所有配置集中在一个文件里,真的是好事吗?我觉得最好的方式是根据不同情况,使用不同的方法是最好的。但前提是每种方法咱们都得知道。