SpringBoot配置文件的加载优先级顺序
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文件里面配置我要重新配置的参数
SpringBoot配置文件的加载优先级顺序的更多相关文章
- springboot 配置文件的加载顺序
springboot 配置文件的加载顺序1.在命令行中传入的参数.2. SPRING APPLICATION JSON中的属性. SPRING_APPLICATION—JSON是以JSON格式配置在系 ...
- Struts按着配置文件的加载的顺序,后面文件和前面文件相同的配置,后面的会把前面的文件的值覆盖
Struts按着配置文件的加载的顺序,后面文件和前面文件相同的配置,后面的会把前面的文件的值覆盖
- SpringBoot配置文件的加载位置
1.springboot启动会扫描以下位置的application.properties或者application.yml文件作为SpringBoot的默认配置文件 --file:/config/ - ...
- Springboot学习01- 配置文件加载优先顺序和本地配置加载
Springboot学习01-配置文件加载优先顺序和本地配置加载 1-项目内部配置文件加载优先顺序 spring boot 启动会扫描以下位置的application.properties或者appl ...
- Struts的default.properties五个配置 一般利用按着配置文件的加载的顺序,后面文件和前面文件相同的配置,后面的会把前面的文件的值覆盖的原则 在struts.xml里面进行配置
1 struts.i18n.encoding=UTF-8 配置编码 2 struts.action.extension=action,, 配置浏览器访问地址的后缀 3 struts.devMode = ...
- springboot的yaml基础语法与取值,配置类,配置文件加载优先级
1.基本语法k:(空格)v:表示一对键值对(一个空格必须有):以空格的缩进来控制层级关系:只要是左对齐的一列数据,都是同一个层级的属性和值也是大小写敏感: server: port: 8081 pat ...
- 「快学SpringBoot」配置文件的加载顺序和配置项默认值设置
前言 有的时候,配置信息是我们无法在开发过程中就能确定的.比如,给客户开发的项目,客户需要根据自身的情况自定义配置,如数据库配置,加密密钥配置等等.这时候,就需要把配置文件放在外面,让用户自定义配置部 ...
- 从SpringBoot源码分析 配置文件的加载原理和优先级
本文从SpringBoot源码分析 配置文件的加载原理和配置文件的优先级 跟入源码之前,先提一个问题: SpringBoot 既可以加载指定目录下的配置文件获取配置项,也可以通过启动参数( ...
- SpringBoot启动如何加载application.yml配置文件
一.前言 在spring时代配置文件的加载都是通过web.xml配置加载的(Servlet3.0之前),可能配置方式有所不同,但是大多数都是通过指定路径的文件名的形式去告诉spring该加载哪个文件: ...
随机推荐
- Java解析文件内容
本文主要实现对.chk文件的解析,将其内容读出来,存入到一个Map中,文件内容实例为: A0500220140828.CHK A05002 |34622511 |373532879 |3 识别分隔符| ...
- bzoj1597: [Usaco2008 Mar]土地购买 dp斜率优化
东风吹战鼓擂第一题土地购买送温暖 ★★★ 输入文件:acquire.in 输出文件:acquire.out 简单对比时间限制:1 s 内存限制:128 MB 农夫John准备扩大他的农 ...
- mysql安装忘记初始密码怎么办
title: MySQL安装过程忘记初始密码最简单最简单解决办法 MySQL安装过程忘记初始密码最简单解决办法 在安装MySQL的时候会给定一个初始的密码,而这个初始的密码特别恶心人一堆大小写特殊 ...
- dp-最大递增子段和
Nowadays, a kind of chess game called “Super Jumping! Jumping! Jumping!” is very popular in HDU. M ...
- 基于iTextSharp的PDF操作(PDF打印,PDF下载)
基于iTextSharp的PDF操作(PDF打印,PDF下载) 准备 1. iTextSharp的简介 iTextSharp是一个移植于java平台的iText项目,被封装成c#的组件来用于C#生成P ...
- KVM管理工具 WebVirtMgr
WEB管理工具 WebVirtMgr WebVirtMgr是一个基于libvirt的Web界面,用于管理虚拟机.它允许您创建和配置新域,并调整域的资源分配.VNC查看器为来宾域提供完整的图形控制台.K ...
- 高通量计算框架HTCondor(五)——分布计算
目录 1. 正文 1.1. 任务描述文件 1.2. 提交任务 1.3. 返回结果 2. 相关 1. 正文 1.1. 任务描述文件 前文提到过,HTCondor是通过condor_submit命令将提交 ...
- .net core ef动态orderby
前言 最近在给大家写一套开源的.net core权限管理框架.现在已经写到前台UI + 后台动态查询的部分. 发现需要动态orderby但是网上没有现成的例子 二话不说上代码 建议namespace ...
- set(待整理)
set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值:另外,还 ...
- 记录 解决ubuntu16.04 ‘E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用) ’
当运行sudo apt-get install/update/其他命令时,会出现如下提示: E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不 ...