java配置文件优先级_SpringBoot配置文件的加载优先级顺序

本文详细介绍了Spring Boot配置文件的加载顺序和优先级,包括默认的application.properties或application.yml文件的位置,以及如何通过`spring.config.location`改变配置路径。内容还涉及到命令行参数、JNDI属性、系统属性、环境变量等加载顺序,并提供了在项目打包后如何通过外部配置文件修改参数的方法。
摘要由CSDN通过智能技术生成

application.properties加载

Spring Boot启动会扫描以下位置的application.properties或者application.yml文件作为Spring Boot的默认配置文件

file:/config/

file:/

classpath:/config/

classpath:/

以上顺序按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级的配置内容会覆盖低优先级配置的内容,其中配置文件中的内容是互补配置,即

存在相同的配置内容,高优先级的内容会覆盖低优先级的内容

存在不同的内容的时候,高优先级和低优先级的配置内容取并集

我们也可以通过spring.config.location来改变默认的配置,具体做法就是项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置,指定配置文件和默认加载的配置文件共同起作用称为互补配置

java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=D:/application.properties

外部配置的加载顺序

Spring Boot也可以从以下位置加载配置: 优先级从高到低顺序,高优先级覆盖低优先级,如有不同内容,高优先级和低优先级形成互补配置

命令行参数

命令行参数的优先级是最高的,假定内部配置的最高优先级配置文件配置的启动端口号是8081,启动命令行参数如以下设置:

java -jar spring-boot-02-config-02.0.0.1-SNAPSHOT.jar --server.port=8089

那么启动的端口就改成了8089,命令行可以把项目的所有的配置选项全部都改掉

来自java:comp/env的JNDI属性

java系统属性(System.getProperties())

操作系统环境变量

RandomValuePropertySource配置的random.*属性值

jar包外部的application-{profile}.properties或者application.yml(带spring.profile)配置文件

jar包内部的application-{profile}.properties或者application.yml(带spring.profile)配置文件

jar包外部的application.properties或者application.yml(不带spring.profile)配置文件

jar包内部的application.properties或者application.yml(不带spring.profile)配置文件

@Configuration注解类上的@PropertySource

通过SpringApplication.setDefaultProperties指定的默认属性

看了以上的配置顺序,下面来思考一个问题,如果我要配置的东西太多,而且项目已经打包,我命令行重新配置参数太麻烦,应该怎么办?

看看上面的11个选项,我们会发现,2,3,4,5配置方法反而比命令行还要麻烦,所以我们可以利用6,7,8,9在项目打包之后,仍然修改配置参数

具体做法如下:

1. 首先找到项目打包好的jar包,放置到一个文件夹里面,例如app

2. 将打包好的jar包移动到这个文件夹里面

3. 在同级目录下创建一个新的application.properties文件,创建好的文件夹的目录结构如下所示:

-------------------app-------------------------

application.properties //需要重新配置的参数在这

spring-boot-02-config-02.0.0.1.SNAPSHOT.jar

-----------------------------------------------

4. 在新创建的application.properties文件里面配置我要重新配置的参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值