精华内容
下载资源
问答
  • SpringBoot配置文件加载顺序

    千次阅读 2020-01-01 14:08:25
    SpringBoot配置文件加载顺序

    一、引言

    如果我们了解SpringBoot配置文件的加载顺序,对项目的开发和部署会有很大的帮助。举个工作中的例子,我们的项目是微服务架构模式,用Nacos做注册中心(可以配置每个微服务),所有服务请求需要通过网关,由网关做统一的鉴权和路由转发。环境有三套,本地环境、测试环境、网络环境。

    每套环境都有自己的Nacos配置和数据库配置,难道我们每次打包到不同环境都有修改完配置文件再打包?开发的时候再一个一个改回来?答案当然是:No。

    So,了解SpringBoot配置文件的加载顺序还是很有必要的。

    二、SpringBoot配置文件的加载顺序

    1、项目内配置文件加载顺序

    SpringBoot项目启动会扫描以下位置的application.properties或者application.yml文件作为SpringBoot的默认配置文件,具体的目录位置见下图。

    • file:./config/ ( 项目根路径下的config文件夹)
    • file:./ (项目根路径)
    • classpath:/config/ (类路径下的config文件夹)
    • classpath:/ (类路径)

    在这里插入图片描述
    四个位置的配置文件中端口分别配置为:8081、8082、8083、8084。并启动程序,发现8081端口起作用。
    在这里插入图片描述
    从上面的位置,逐一注释掉配置文件中的配置项,启动项目,会发现配置文件逐一会起作用。下面是注释掉8081的配置,启动项目后,发现8082会起作用。可以逐一注释验证。
    在这里插入图片描述
    上面四个位置的配置文件位置,优先级由高到底,高优先级的配置会覆盖低优先级的配置,没有的配置进行互补配置。

    注意:不是类路径下的配置文件在打包时,如果不做配置是不会打包进jar中的,也会是说前两个配置在项目打包后,包中是不存在的,所以尽量不要用前两个位置。

    2、外部配置文件

    当我们把项目打包后,如何在配置SpringBoot项目呢?

    (1)、命令行参数

    项目打包好以后,我们可以使用命令行参数的形式,来改变想改变的几个参数,直接在启动命令后添加启动参数,如果有多个配置项,可以用空格分开。

    java -jar springboot-configuration.jar --server.port=8088 --server.servlet.context-path=/spring
    在这里插入图片描述

    (2)、spring.config.location

    在第一种情况下,如果参数数量过多,我们就要考虑配置文件了,我们在启动项目的时候可以用spring.config.location来指定配置文件的新位置。指定的配置文件和jar包中默认加载的配置文件共同起作用形成互补配置

    指定配置文件从F盘下读取
    java -jar springboot-configuration.jar --spring.config.location=F:/application.properties

    3、配置文件加载顺序小结

    外部配置加载顺序SpringBoot也可以从以下位置加载配置:

    优先级从高到低,高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置 。

    1. 命令行参数。所有的配置都可以在命令行上进行指定;
    2. 来自java:comp/env的JNDI属性
    3. Java系统属性System.getProperties());
    4. 操作系统环境变量 ;
    5. jar包外部application-{profile}.propertiesapplication.yml(带spring.profile)配置文件
    6. jar包内部application-{profile}.propertiesapplication.yml(带spring.profile)配置文件 再来加载不带profile
    7. jar包外部application.propertiesapplication.yml(不带spring.profile)配置文件
    8. jar包内部application.propertiesapplication.yml(不带spring.profile)配置文件
    9. @Configuration注解类上的@PropertySource

    根据第7条,我们只要在jar包同目录外放置一个application.properties配置文件,就会起作用,同时这个配置文件的优先级还比jar内的高,这个配置很有作用!!
    在这里插入图片描述

    具体可以参看官方文档:
    SpringBoot配置文件加载顺序官方文档

    展开全文
  • 配置文件占位符 配置文件加载位置

    配置文件占位符

    在这里插入图片描述

    配置文件加载位置

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    互补配置

    选择一个优先级比file:/config低的优先级,application.properties里面

    server.port=8082
    #配置项目的访问路径
    server.servlet.context-path=/ss
    

    在这里插入图片描述
    在这里插入图片描述

    外部配置加载顺序

    SpringBoot也可以从以下位置加载配置; 优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置

    1.命令行参数

    所有的配置都可以在命令行上进行指定

    java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.context-path=/abc

    多个配置用空格分开; --配置项=值

    2.来自java:comp/env的JNDI属性

    3.Java系统属性(System.getProperties())

    4.操作系统环境变量

    5.RandomValuePropertySource配置的random.*属性值

    由jar包外向jar包内进行寻找;

    优先加载带profile

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

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

    再来加载不带profile

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

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

    10.@Configuration注解类上的@PropertySource

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

    所有支持的配置加载来源;

    参考官方文档

    展开全文
  • 第二章 2.10 SpringBoot项目外部配置文件加载顺序优先级

    2.10 外部配置文件加载优先级

    SpringBoot配置文件不仅可以在application.properties/application.yml文件下配置 还可以在项目外面配置

    这里我重点介绍几个

    1.命令行参数

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

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

    4.jar包外部的application.properties或者application.yml

    5.jar包内部的application.properties或者application.yml

    这里加载配置文件的优先级我是从高到低顺序排列的,即

    命令行参数>>jar外部的配置文件(带spring.profile属性的)>>jar内部的配置文件带(spring.profile属性的)>>

    jar包外部的不带(spring.profile属性的)>>jar包内部的不带(spring.profile属性的)

    当然这里的配置文件加载与配置文件的加载位置相同,高优先级覆盖低优先级的相同内容,不相同的内容会形成互补配置,现在我们使用Maven打包这个项目,打包项目Maven只会打包main下面的java以及resources下面的资源,


    现在我们来演示

    在这里插入图片描述

    这里我在resources下配置了两个application.properties,一个在config目录下,一个在resources目录下,

    根据Springboot配置文件加载顺序,这里在复习一遍

    项目下的config下的配置文件优先级大于项目下的配置文件大于类路径下的config文件下的配置文件大于类路径下的配置文件

    如果我们把SpringBoot项目打成了一个jar包,

    在jar的同级别目录有一个config目录,config目录下有一个配置文件

    jar同级别目录也有一个配置文件,

    打好的jar里面resources目录下也有一个config目录并且这个目录下也有一个配置文件,

    打好的jar包里面resources目录下也有一个配置文件.总共四个配置文件,

    总共四个配置文件,在启动SpringBoot应用时,会优先加载外部config目录下的的配置文件,在加载外部的配置文件,在加载resources目录下config目录下的配置文件,在加载resource下的配置文件,相同的属性高优先级的覆盖低优先级的,不同的属性所有配置文件下形成互补配置

    展开全文
  • (1)配置文件加载位置 (2)外部配置加载顺序配置文件加载位置springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件–file:./config/ –file:./ 指的是...

    主要内容:
    (1)配置文件加载位置
    (2)外部配置加载顺序


    配置文件加载位置

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

    –file:./config/
    –file:./ 指的是项目根目录
    –classpath:/config/
    –classpath:/ 指的是resources,src目录下
    优先级由高到底,高优先级的配置会覆盖低优先级的配置;
    SpringBoot会从这四个位置全部加载主配置文件;互补配置

    我们还可以通过spring.config.location来改变默认的配置文件位置

    在任意一个配置文件中写入:

    spring.config.location=G:/application.properties

    项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用形成互补配置;

    启动项目并重新设置配置
    java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar –spring.config.location=G:/application.properties


    外部配置加载顺序

    SpringBoot也可以从以下位置加载配置; 优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置。

    1.命令行参数
    所有的配置都可以在命令行上进行指定
    java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar –server.port=8087 –server.context-path=/abc
    多个配置用空格分开; –配置项=值
    2.来自java:comp/env的JNDI属性
    3.Java系统属性(System.getProperties())
    4.操作系统环境变量
    5.RandomValuePropertySource配置的random.*属性值

    由jar包外向jar包内进行寻找;

    优先加载带profile
    6.jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
    7.jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件

    再来加载不带profile
    8.jar包外部的application.properties或application.yml(不带spring.profile)配置文件
    9.jar包内部的application.properties或application.yml(不带spring.profile)配置文件
    10.@Configuration注解类上的@PropertySource
    11.通过SpringApplication.setDefaultProperties指定的默认属性
    所有支持的配置加载来源;

    展开全文
  • SpringBoot系列之配置文件加载位置

    千次阅读 2019-11-10 09:25:37
    SpringBoot系列之配置文件加载位置 SpringBoot启动会自动扫描如下位置的application.properties或者application.yml文件作为Springboot的默认配置文件 * project:/config/(项目根目录下面config文件夹里的配置文件...
  • hadoop配置文件加载机制

    千次阅读 2017-08-07 11:55:20
    hadoop配置文件加载机制@(HADOOP)[hadoop]hadoop通过Configuration类来保存配置信息 1、通过Configuration.addResource()来加载配置文件 2、通过Configuration.get***()来获取配置属性1、创建一个新的...
  • SpringBoot中logback日志配置文件加载顺序&配置记录 springboot加载日志配置文件有两种,一种是加载logback自身的配置文件,另一种是加载具有spring特性的logback配置文件 尝试在 classpath 下查找文件logback...
  • Spring配置文件加载外部配置文件

    千次阅读 2017-06-22 18:06:46
    有时,应用程序可能需要从不同的位置(例如:文件系统、classpath或者URL)读取外部资源(例如:文本文件、xml文件、属性文件或或者图像文件)。通常,为了从不同位置加载资源,需要和...要从文件系统加载资源,可以使用fil
  • struts2配置文件加载顺序

    千次阅读 2015-10-16 22:24:43
    struts2配置文件加载顺序struts2框架要能执行,必须先加载StrutsPrepareAndExecuteFilter. 在StrutsPrepareAndExecuteFilter的init方法中对Dispatcher进行了初始化. 在Dispatcher类中定义的init方法内就描述了...
  • 一、配置文件加载位置及优先级 配置文件默认可放在这四个目录下: file:./config/ file:./ classpath:/config/ classpath:/ 且由上到下的优先级是从高到低的 所有位置的文件都会被扫描并加载 互补配置 高优先级...
  • CAT 配置文件加载说明

    千次阅读 2016-10-08 17:39:12
    CAT 配置文件加载说明背景说明CAT监控系统由多个组件组成 cat-home.war : 服务端组件,负责收集监控信息,分析处理生成报告、作出警告 cat-client.jar : 客户端组件,负责与服务端进行连接通信, cat-core.jar : ...
  • springboot 默认加载配置文件为 application.properties ,为了正常加载其他配置文件,在启动类上做了如下引用处理: @SpringBootApplication @PropertySources({ @PropertySource(value = "mybatis.properties...
  • 【1】项目内部配置文件 spring boot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件 –file:./config/ –file:./ –classpath:/config/ –classpath:/ 即如...
  • 利用设置环境变量,可以实现springboot在配置文件加载动态值,配置文件中读取环境变量值的写法 ${环境变量名: 默认值} 例如 在springboot启动加载配置文件application.properties 中 testenv="${myenv:a default...
  • springboot配置文件加载不到的问题

    万次阅读 多人点赞 2018-12-15 20:28:43
    问题:springboot启动加载不到src/main/resources下的配置文件application.yml 我IDE里面看着配置文件命名在,但是并没有发布到target,原因就在这里,肾痛找了好久的错误原来是文件根本就没发布。 通过...
  • 配置文件位置以及读取的顺序 存放目录 Application属性文件,按优先级排序,位置高的将覆盖位置底的,顺序1会覆盖下面所有的 当前项目目录下的一个/config子目录 当前项目目录 项目的resources即一个classpath...
  • 项目中需要用到很多配置文件,不同环境的配置文件是不一样的,因此如果只用一个配置文件,势必会造成配置文件混乱,这里提供一种利用环境变量控制配置文件加载的方法,如下: 一、配置环境变量  如果是windows...
  • SpringBoot的配置文件加载顺序

    千次阅读 2020-04-27 17:42:32
    SpringBoot中有以下两种配置文件bootstrap (.yml 或者 .properties),application (.yml 或者 .properties) (1)bootstrap.yml(bootstrap.properties)先加载 (2)application.yml(application.properties)后...
  • Akka之配置文件加载

    千次阅读 2017-12-19 16:29:42
    akka启动时,默认加载application.conf配置文件,所以有关辅助的配置可以在该文件中定义。 此外,akka也提供可以在代码中以硬编码的方式,加入或覆盖配置。如: // Override the configuration of the port Config...
  • web.xml配置文件配置如下,启动时时候加载配置文件先后顺序是怎样的, 1.先加载context-param,初始化springMVC加载spring-mvc.xml,这样的话spring-mvc.xml会不会被加载两次。 2.初始化springMVC加载spring-mvc....
  • 一丶为何设计配置文件加载 Struts2框架起源,Struts2是一个基于MVC设计模式的web应用框架,它实质上相当于Servlet的功能.它是基于Struts1的基础上集合优秀的web框架WebWork采用拦截器的机制来处理用户请求.低耦合. 二...
  • Java配置文件加载及读写

    千次阅读 2017-06-17 04:23:17
    引言我们一般是通过class.getResources(name)等通过类加载器查找资源的方法来加载程序中的配置文件。这两天在测试的过程中,发现该操作只能对classpath下的配置文件进行读写,而操作不到src源码目录下的配置文件。...
  • xml配置文件加载不到properties文件

    千次阅读 2018-12-12 02:35:33
    问题示例:Could not resolve placeholder 'redis.port' in value "${redis.port}" 问题解决:在context:property-placeholder标签中添加一个属性ignore-unresolvable=&...这种加载的话, 这样就可以了...
  • Spring Boot配置文件加载

    千次阅读 2019-04-30 16:22:26
    使用Spring Boot时,属性按以下顺序加载(请参阅Spring Boot参考指南中的Externalized Configuration)。 命令行参数。 Java系统属性(System.getProperties())。 OS环境变量。 来自java:comp / env的JNDI...
  • Spring之配置文件加载方式

    千次阅读 2009-04-29 14:42:00
    Spring在org.springframework.core.io包中提供了多种配置文件加载方式。无论是XML、URL还是文件,都有很好的支持。比如基于URL的UrlResource、基于输入流的InputStreamResource、基于文件系统的FileSystemResource、...
  • springcloud项目配置文件加载顺序

    千次阅读 2019-04-19 17:11:09
    建议在bootstrap.yml中存放一些启动后就不想修改的配置,在结合configserver一起使用时,bootstrap属性文件更适合做一些引导下文的配置 如果没有设置spring.application.name则会默认读取appli...
  • Spring mvc 启动配置文件加载两遍问题

    千次阅读 2017-10-31 23:21:55
    后来经过测试发现自己的Spring配置文件加载了两次。如果是定时任务,那么就会出现两个相同的定时任务,可能对程序的数据造成影响。 下面我们分析下什么情况下可能加载两次配置文件。 情况

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,272,809
精华内容 509,123
关键字:

配置文件加载