SpringBoot中application.xxx配置文件的读取优先级&多环境配置介绍


前言

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


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

懒得看的人, 我直接先上结论:
其实官网上给写的明明白白,就是下图那个优先级顺序:在这里插入图片描述
翻译成人话就是:
1.在项目的根路径下创建config目录, 然后里面有一个application.yaml文件(读取优先级最高)
2.直接在项目的根路径下创建application.yaml文件(读取优先级第二)
3.在src/main/resources下创建config目录, 然后里面有一个application.yaml文件(读取优先级第三)
4.在src/main/resources下创建application.yaml文件(这也是application.yaml的默认存放位置,读取优先级最低)
还不明白就看下图:
在这里插入图片描述

二、多环境配置介绍

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

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

这种方式简单粗暴,只需要定义多个配置文件即可,每个不同的环境设置一个不同的配置文件。
在这里插入图片描述
如果你想指定激活哪一个配置文件,那就在默认的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的内容。


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

Spring Boot配置文件非常灵活,可以根据需要选择不同的文件进行配置。Spring Boot配置文件分为两种:application.propertiesapplication.yml。两种配置文件优先级是相同的,都可以用来配置 Spring Boot 的应用程序。 首先,Spring Boot 会从 application.propertiesapplication.yml 文件读取配置信息,如果在 application.propertiesapplication.yml 都有同名的属性,则 application.yml 的配置会覆盖 application.properties 的配置。 其次,Spring Boot 会从外部配置文件读取配置信息。外部配置文件可以指定在启动命令,例如: ``` java -jar myapp.jar --spring.config.name=myapp --spring.config.location=file:/opt/myapp/config/ ``` 这条命令告诉 Spring Boot 使用 myapp.properties 或 myapp.yml 作为配置文件,并且从 /opt/myapp/config/ 目录读取配置信息。同样,如果一个属性在外部配置文件被定义,则会覆盖 application.propertiesapplication.yml 的配置。 最后,Spring Boot 会从命令行参数读取配置信息。例如,生成的 jar 包可以使用以下命令运行: ``` java -jar myapp.jar --server.port=8081 --debug=true ``` 这条命令告诉 Spring Boot 使用 8081 端口启动应用程序,并且启用调试模式。同样,命令行参数的属性会覆盖所有其他配置信息。 总的来说,Spring Boot配置文件优先级为:命令行参数 > 外部配置文件 > application.yml > application.properties。在实际开发,我们可以根据需要灵活选择不同的配置方式。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值