springboot如何查找配置文件路径的顺序和其优先级别

目录
  • 查找配置文件路径的顺序和其优先级别
    • 一、springboot查找配置文件路径的顺序和其优先级别
    • 二、同路径下
  • springboot配置文件不生效的原因

查找配置文件路径的顺序和其优先级别

提示:以下是本篇文章正文内容,下面案例仅供参考

一、springboot查找配置文件路径的顺序和其优先级别

在项目类,有四个地方系统会自动扫描:

1.file:/config/

2.file:/

3.classPath:/config/

4.classPath:/

1)其文件生效优先级别,从上到下,即如果在不同路径有相同属性,会优先选择上面的路径属性(1>2>3>4)

2)路径扫描顺序和其优先级别相反(4>3>2>1),后面的会覆盖前面的,并且所有路径都会扫描,形成互补。

二、同路径下

application.properties(application.yml)、bootstrap.properties(bootstrap.yml)加载顺序及优先级别

1.application和bootstrap比较(前缀比较)

提示:bootstrap类型文件是在多服务项目时,引入了springcloud相关配置才会生效,springboot并不会自动扫描bootstrap文件,只会扫描application文件,所以两者的比较只有在spingcloud多服务项目中才有意义。

1)先后加载顺序:若application 和bootstrap 在同一目录下:bootstrap先加载 application后加载

2)优先级问题:Bootstrap 属性有高优先级,默认情况下,它们不会被本地配置覆盖。(这个是网上和官方的说法,但经过本人的测试,发现application 会覆盖bootstrap,我的理解是不是所有的bootstrap属性都比application优先,只有涉及底层系统相关配置才会比较高 ,有不同看法的老哥欢迎探讨)

3)区别:bootstrap 和 application 都可以用来配置参数。

bootstrap 用来程序引导时执行,应用于更加早期配置信息读取。可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。一旦bootstrap被加载,则内容不会被覆盖。

application.yml 可以用来定义应用级别的, 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。

4)bootstrap典型的应用场景(经典三点)

  • 1.当使用 Spring Cloud Config Server 配置中心时,这时需要在 bootstrap.yml 指定 spring.applicatio配置文件中n.name 和 spring.cloud.config.server.git.uri,添加连接到配置中心的配置属性来加载外部配置中心的配置信息
  • 2.一些固定的不能被覆盖的属性
  • 3.一些加密/解密的场景

2. .properties和.yml比较(后缀比较)

1)加载顺序

.yml先于.properties

2)优先级别

.properties优先于.yml,因为.properties后加载会覆盖.yml

3)区别

  • 1.yml拥有天然的树状结构,properties是键值对;
  • 2.在properties文件中是以”.”进行分割的, 在.yml中是用”:”进行分割;
  • 3.在.yml中缩进一定不能使用TAB,否则会报很奇怪的错误;;
  • 4.yml比.properties对中文对支持更友好。
  • 5.yml是跨语言的:可以在包括JAVA,go,python等大量的语言中使用,比如做云计算使用go和java的时候,可以通过配置中心使用同一份配置!
  • 6.在自定义配置文件时,只能使用properties,因为spring只有@PropertiesSource注解可以引入自定义注解,对yml没有支持

小结:在同级目录下,优先级别application>bootstrap,.properties>,yml,前缀大于后缀,文件路径大于文件名称

springboot配置文件不生效的原因

1、将打包方式改为jar 。

<packaging>jar</packaging>

2、可能是yml文件缩近格式不对,仔细检查一下就行了。

3、还有就是你的根本就不是boot项目,application.yml没有叶子标志

1.点开项目结构

2.打开模块一次点击

3.

4.重构项目

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 简单了解springboot加载配置文件顺序

    1.目录结构 Application属性文件,按优先级排序,位置高的将覆盖位置 当前项目目录下的一个/config子目录 当前项目目录 项目的resources即一个classpath下的/config包 项目的resources即classpath根路径(root) 二.读取顺序 如果在不同的目录中存在多个配置文件,它的读取顺序是: 1.config/application.properties(项目根目录中config目录下) 2.config/application.yml 3.appli

  • SpringBoot配置加载,各配置文件优先级对比方式

    目录 1.SpringBoot配置文件 以设置应用端口为例 2.配置文件目录 3.自定义配置属性 自定义配置提示 4.指定配置文件 @PropertySource使用 装配yaml配置文件 @ImportResource使用 其他问题 idea使用*.properties文件出现中文乱码问题? 解决方法: 1.SpringBoot配置文件 SpringBoot使用一个以application命名的配置文件作为默认的全局配置文件.支持properties后缀结尾的配置文件或者以yml/yaml后缀

  • Springboot常用注解及配置文件加载顺序详解

    Springboot常用注解及底层实现 1.@SpringBootApplication:这个注解标识了一个SpringBoot工程,她实际上是另外三个注解的组合,分别是: @SpringBootConfiguration:源码可以看到,这个注解除了元注解外,实际就只有一个@Configuration,把该类变成一个配置类,表示启动类也是一个配置类: @EnableAutoConfiguration:是开启自动配置的功能,向Spring容器中导入了一个Selector,用来加载ClassPath

  • springboot如何查找配置文件路径的顺序和其优先级别

    目录 查找配置文件路径的顺序和其优先级别 一.springboot查找配置文件路径的顺序和其优先级别 二.同路径下 springboot配置文件不生效的原因 查找配置文件路径的顺序和其优先级别 提示:以下是本篇文章正文内容,下面案例仅供参考 一.springboot查找配置文件路径的顺序和其优先级别 在项目类,有四个地方系统会自动扫描: 1.file:/config/ 2.file:/ 3.classPath:/config/ 4.classPath:/ 1)其文件生效优先级别,从上到下,即如果

  • SpringBoot内部外部配置文件加载顺序解析

    内部配置加载顺序 SpringBoot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件 –file:./config/ –file:./ –classpath:/config/ –classpath:/ 优先级由高到底,高优先级的配置会覆盖低优先级的配置: SpringBoot会从这四个位置全部加载主配置文件:互补配置:还可以通过spring.config.location来改变默认的配置文件位置 项

  • SpringBoot框架配置文件路径设置方式

    目录 SpringBoot配置文件路径设置 自定义配置文件路径以及多profile配置文件 一.什么是classpath 二.自定义springboot配置文件路径 三.多 profiles 配置文件的切换 SpringBoot配置文件路径设置 选择"Edit Configurations": 下springboot启动配置中修改VM options的值: 值参考: -Dspring.config.location=E:/workspace/xxxx/application.yml -

  • springboot自定义yml配置文件及其外部部署过程

    目录 1.序 2.加载自定义yml文件 2.1.使用@PropertiesSource注解读取yml配置文件-简单版 2.2.使用@PropertiesSource注解读取yml配置文件-不简单版? 2.3.加前缀可行版 3.外部部署 3.1.spring boot核心配置文件外部加载 3.2.在@PropertySource中添加路径 3.3.通过YamlPropertiesFactoryBean添加路径 3.4.自定义yaml文件资源加载类 1.序 背景:有个小项目需要后台,俺顶着Java菜

  • SpringBoot读取外部配置文件的方法

    1.SpringBoot配置文件 SpringBoot使用一个以application命名的配置文件作为默认的全局配置文件.支持properties后缀结尾的配置文件或者以yml/yaml后缀结尾的YAML的文件配置. 以设置应用端口为例 properties文件示例(application.properties): server.port=80 YAML文件示例(application.yml): server: port: 80 在properties和yml/yaml配置文件同时存在的情况

  • SpringBoot加载配置文件的实现方式总结

    目录 一.简介 二.代码实践 2.1.通过@value注解实现参数加载 2.2.通过@ConfigurationProperties注解实现参数加载 2.3.通过@PropertySource注解实现配置文件加载 2.4.通过自定义环境处理类,实现配置文件的加载 2.5.最后,我们来介绍一下yml文件读取 三.小结 一.简介 在实际的项目开发过程中,我们经常需要将某些变量从代码里面抽离出来,放在配置文件里面,以便更加统一.灵活的管理服务配置信息.比如,数据库.eureka.zookeeper.r

  • SpringBoot 常用读取配置文件的三种方法详解

    目录 前言 一.使用 @Value 读取配置文件 二.使用 @ConfigurationProperties 读取配置文件 1.类上添加@Configuration注解 2.使用@EnableConfigurationProperties注解 3.使用@ConfigurationPropertiesScan扫描 三.使用 Environment 读取配置文件 四.常用的几种数据结构配置读取 我们在SpringBoot框架进行项目开发中该如何优雅的读取配置呢?或者说对于一些List或者Map应该如

  • thinkphp配置文件路径的实现方法

    如下所示: //系统常量定义 //去THinkPHP手册中进行查找 echo "<br>"."网站的根目录地址".__ROOT__." "; echo "<br>"."入口文件地址".__APP__." "; echo "<br>"."当前模块地址".__URL__." "; echo &qu

随机推荐