SpringBoot系列之配置文件加载位置

SpringBoot启动会自动扫描如下位置的application.properties或者application.yml文件作为Springboot的默认配置文件

  • project:/config/(项目根目录下面config文件夹里的配置文件)
  • project:/(项目根目录下面的配置文件)
  • classpath:/config/(Resources文件夹下面config文件夹里的配置文件)
  • classpath:/(Resources文件夹下面的配置文件))

如图所示,在resources文件夹下面建个config文件夹,往里面丢个application.properties配置文件,再往resources根目录下面也丢个application.properties文件



先往resources根目录下面的application.properties配置文件写几个参数:

  1. # 配置端口为8070
  2. server.port=8070
  3. # 配置contextPath
  4. server.servlet.context-path= /example

再往config文件夹下面的application.properties配置文件添加加个参数:

  1. # 匹配端口为8081
  2. server.port=8081

启动一下项目,在Springboot项目的控制台可以看到打印输出



当然你想写个控制类测试一下也是可以的

  1. package com.example.springboot.properties.conroller;
  2. import org.springframework.web.bind.annotation.GetMapping;
  3. import org.springframework.web.bind.annotation.RestController;
  4. @RestController
  5. public class HelloController {
  6. @GetMapping(value = {"/hello","/sayHello"})
  7. public String sayHello(){
  8. return "hello world!";
  9. }
  10. }

ok,启动项目,经过验证访问 http://localhost:8081/example/hello 才是可以访问的,8080端口不可以访问,而context-path: /example是配在resources根目录下面的,这个属性配置没被覆盖,其端口配置就被覆盖了,所以我们可以得出,Springboot项目启动时是会先读取config文件夹里的配置文件,因为只配了一个端口的,所以就只读端口的,接着,低优先级的application.properties没被覆盖的配置属性还是会被读取的,所以我们也可以说配置文件的读取存在互补配置的特性

ok,继续验证,如图所示:



按照同样的方式,验证放在4个位置的application.properties读取优先级,通过实践验证,可以得出:

Springboot项目启动时会按照如下顺序由高到低读取配置,高优先级的属性会覆盖低优先级的属性,属性文件之间存在互补配置的特性

  • project:/config/(项目根目录下面config文件夹里的配置文件)
  • project:/(项目根目录下面的配置文件)
  • classpath:/config/(Resources文件夹下面config文件夹里的配置文件)
  • classpath:/(Resources文件夹下面的配置文件))

ok,这里介绍了Springboot项目启动时属性文件的读取顺序,当然我们也是可以通过spring.config.location来指定默认配置文件的位置

可以将参数加在启动时候的虚拟机参数里:

代码 -Dspring.config.location=D:/application.properties



项目启动参数里加也是可以的



丢在application.properties配置文件里?



很显然是不起效的,因为一个配置文件,肯定不能指定其它配置文件



java -jar命令也是可以的,首先要maven package



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

idea有些版本是有teminal命令台,可以直接在里面敲命令,没有的话就只能通过cmd直接敲命令的

SpringBoot系列之配置文件加载位置的更多相关文章

  1. SpringBoot——配置文件加载位置及外部配置加载顺序

    声明 本文部分转自:SpringBoot配置文件加载位置与优先级 正文 1. 项目内部配置文件 spring boot 启动会扫描以下位置的application.properties或者applic ...

  2. springboot配置文件加载位置

    springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件 –file:./config/ – ...

  3. SpringBoot配置文件加载位置与优先级

    1. 项目内部配置文件 spring boot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件 –fil ...

  4. springboot深入学习(一)-----springboot核心、配置文件加载、日志配置

    一.@SpringBootApplication @SpringBootApplication是spring boot的核心注解,源码如下: 相当于:@Configuration+@EnableAut ...

  5. 配置文件加载位置与多profile文件

    一. 我们在编写配置文件时,文件名可以是: application-{profile}.properties 例如:我们有几个配置文件对应的是项目不同时期的配置文件 1.application-sit ...

  6. 【串线篇】spring boot配置文件加载位置

    springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件 (1)–file:./config/ ...

  7. 关于gradle与maven对springboot项目的配置文件加载异同

    先说下缘由吧,由于年后跳槽换了家公司,构建项目工具也有maven改成gradle了,所以在搭建框架进行开发打包过程中难免会遇到一些意想不到的问题. 本文简述下打包扫描加载配置文件的异同吧. maven ...

  8. SpringBoot之配置文件加载位置

    1.SpringBoot启动会扫描application.properties或者application.yml文件作为springboot的配置文件.默认创建项目生成application.prop ...

  9. 3springboot:springboot配置文件(配置文件占位符、Profile、配置文件的加载位置)

    1.配置文件占位符 RaandomValuePropertySourcr:配置文件可以使用随机数     ${random.value}    ${random.int}  ${random.long ...

随机推荐

  1. linux 磁盘分区和挂载看这一篇就够了

    Linux fdisk 和 mount 命令操作指南,linux磁盘管理.新增磁盘.挂载新硬盘(linux运维入门) 首先列出文件系统的整体磁盘空间使用情况.可以用来查看磁盘已被使用多少空间和还剩余多 ...

  2. 新入手的Mac,该如何设置?

    如果您入手了一台Mac.设置Mac的过程直观且易于执行,但是如果您是新手,可能会遇到有一些小麻烦.没关系,本篇文章小编将帮助您设置Mac,让您像专业人士一样迅速运转您的Mac. 设置前提 在开始设置全 ...

  3. Mysql安装及常用命令

    部分内容转载于 https://www.linuxidc.com/Linux/2016-09/135288.htm https://www.cnblogs.com/rays-/p/8081798.ht ...

  4. SpringBoot系列之日志框架使用教程

    目录 1.SpringBoot日志级别 1).日志级别简介 2).默认日志级别 3).配置日志级别 4).日志分组设置 2.SpringBoot日志格式设置 1).默认格式原理简介 2).默认日志格式 ...

  5. JAVA描述算法和数据结构(01):稀疏数组和二维数组转换

    本文源码:GitHub·点这里 || GitEE·点这里 一.基本简介 1.基础概念 在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵:与之相反, ...

  6. Thinkphp 5.0.15 设计缺陷导致Insert/update-SQL注入 分析

    分析 与上一个漏洞类似,这个也是前端可以传入一个数组变量,如['exp','123','123'],后端根据array[0]来将array[1]和array[2]直接拼接到SQL语句中. 由于TP只是 ...

  7. flex常见布局

    一,常见圣杯布局 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  8. 通过C#代码调用Dynamics 365 Web API执行批量操作

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  9. Python 函數 Function

    函數最初被設計出來,是用來減輕重複 coding 一段相同的代碼,這之間只有代碼 (方法,Method) 的重用,但還沒有物件導向OO整個Object 的屬性與方法被封裝重用的概念. 函數的定義很簡單 ...

  10. 033.[转] Java 工程师成神之路 | 2019正式版

    Java 工程师成神之路 | 2019正式版 原创: Hollis Hollis 2月18日 https://mp.weixin.qq.com/s/hlAn6NPR1w-MAwqghX1FPg htt ...