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配置文件写几个参数:

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

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

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

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



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

package com.example.springboot.properties.conroller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
public class HelloController { @GetMapping(value = {"/hello","/sayHello"})
public String sayHello(){
return "hello world!";
}
}

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. Oracle解析逗号分隔的字符串,或者01110110101此类数据

    -- 1.提取此类数据中的1的索引位置,从1开始    例: 0001100001100 --> 4,5,10,11 create or replace function hazq_instr_ ...

  2. div块水平居中,垂直居中

    水平居中一个div想要水平居中于它的父div中只需要给它加css属性margin:0 auto; 即可 <!DOCTYPE html> <html> <head> ...

  3. win 10 命令行导出注册表

    命令如下: reg  export  注册表中的key  保存路径 reg export HKLM\Software\MyCo\MyApp AppBkUp.reg 如果需要直接覆盖原来的文件,可以加上 ...

  4. SQL Server事务复制(sql 2008 r2)

    一.环境准备 1.两个虚拟服务器 主机1:XINXIBU01  作为发布和分发服务器   主 机2:XINXIBU02 192.168.1.160  作业阅服务器 2.SQL SERVER sql 2 ...

  5. Jmeter脚本录制攻略

    基于Apache JMeter(5.2.1) 首先在TestPlan里添加一个HTTP代理服务武器: 设置端口,在目标控制器里选择线程组. 在Chrome浏览器里设置代理: 点击启动按钮后,在浏览器登 ...

  6. java之集合(Set、List、Map)

    java集合类存放于java,uti包中,是一个用于存放对象的容器. 集合只能存放对象,比如存入的是int型数据1,那么它会自动转换成Integer包装类后再存入: 集合存放的是多个对象的引用,对象本 ...

  7. IT兄弟连 HTML5教程 CSS3揭秘 在HTML文档中放置CSS的几种方式

    有很多方法将样式表加入到HTML中,每种方法都有自己的优点和缺点.新的HTML元素和属性已被加入,以允许样式表与HTML文档更简易地组合起来.将样式表加入到HTML中的常用方法有内联样式表.嵌入一张样 ...

  8. 【Unity游戏开发】Android6.0以上的动态权限申请问题

    一.引子 最近公司的游戏在做安全性测试,期间也暴露出了不少安全上的问题.虽然我们今天要说的权限申请和安全性相关不大,但是也会影响到游戏的使用体验等,所以本篇博客中马三就想和大家谈谈Android6.0 ...

  9. 织女星开发板调试器升级为Jlink固件

    前言 为了能使用板载的FreeLink调试器来调试RISC-V内核,我们需要把默认的CMSIC-DAP固件,升级为JLink固件,固件升级之后,通过选择使用不同的驱动程序,来支持ARM内核还是RISC ...

  10. PHP 开发工程师基础篇 - PHP 数组

    数组 (Array) 数组是 PHP 中最重要的数据类型,可以说是掌握数组,基本上 PHP 一大半问题都可以解决. PHP 数组与其他编程语言数组概念不一样.其他编程语言数组是由相同类型的元素(ele ...