SpringApplicationapplication.properties以下位置的文件加载属性并将它们添加到Spring Environment

  1. 一个/config当前目录下的子目录。
  2. 当前目录
  3. 一个类路径/config
  4. 类路径根

该列表按优先顺序排列(在列表中较高的位置定义的属性将覆盖在较低位置定义的属性)。

 

如果您不喜欢application.properties作为配置文件名,则可以通过指定spring.config.name环境属性来切换到另一个文件名。您还可以使用spring.config.location 环境属性(逗号分隔的目录位置或文件路径列表)引用显式位置。以下示例显示如何指定不同的文件名称:

$ java -jar myproject.jar --spring.config.name = myproject

以下示例显示如何指定两个位置:

$ java -jar myproject.jar --spring.config.location = classpath:/default.properties,classpath:/override.properties

spring.config.name并且spring.config.location很早就用来确定哪些文件必须加载,因此必须将其定义为环境属性(通常是OS环境变量,系统属性或命令行参数)。

如果spring.config.location包含目录(而不是文件),它们应该结束/(并且在运行时加入从spring.config.name 加载之前生成的名称,包括配置文件特定的文件名)。指定的文件 spring.config.location按原样使用,不支持特定于配置文件的变体,并被特定于配置文件的特性覆盖。

配置位置按相反顺序搜索。默认情况下,配置的位置是 classpath:/,classpath:/config/,file:./,file:./config/。结果搜索顺序如下:

  1. file:./config/
  2. file:./
  3. classpath:/config/
  4. classpath:/

当使用自定义配置位置进行配置时spring.config.location,它们会替换默认位置。例如,如果spring.config.location使用该值配置classpath:/custom-config/,file:./custom-config/,则搜索顺序变为以下内容:

  1. file:./custom-config/
  2. classpath:custom-config/

或者,使用自定义配置位置进行配置时spring.config.addition-location,除了默认位置以外,还会使用 它们。在默认位置之前搜索其他位置。例如,如果classpath:/custom-config/,file:./custom-config/配置了其他位置,则搜索顺序如下所示:

  1. file:./custom-config/
  2. classpath:custom-config/
  3. file:./config/
  4. file:./
  5. classpath:/config/
  6. classpath:/

这种搜索顺序使您可以在一个配置文件中指定默认值,然后在另一个配置文件中有选择地覆盖这些值 您可以在其中一个默认位置为您的应用程序application.properties(或您选择的其他基本名称 spring.config.name)提供默认值。这些默认值可以在运行时被置于其中一个自定义位置的不同文件覆盖。

如果使用环境变量而非系统属性,则大多数操作系统不允许使用句点分隔的键名称,但可以使用下划线(例如,SPRING_CONFIG_NAME而不是spring.config.name)。

如果您的应用程序在容器中运行,那么可以使用JNDI属性(in java:comp/env)或servlet上下文初始化参数,而不是使用环境变量或系统属性。

springboot 应用程序的文件检索描述的更多相关文章

  1. Verilog HDL的程序结构及其描述

    这篇博文是写给要入门Verilog HDL及其初学者的,也算是我对Verilog  HDL学习的一个总结,主要是Verilog HDL的程序结构及其描述,如果有错,欢迎评论指出. 一.Verilog ...

  2. 从安装linux(centos7.6)系统到部署springboot java程序到k8s(大纲)

    本文说明从安装linux系统开始,一直到在k8s运行springboot程序全过程 本文假设在自己电脑操作,因此linux系统使用vmware虚拟机,linux发行版使用centos 7.6.1810 ...

  3. 程序员如何描述清楚线上bug

    案例 一个管理后台的bug,把操作记录中的操作员姓名,写成了该操作员的id.原因是修改了一个返回操作人姓名的函数,返回了操作人的id.但是还有其他地方也用这个函数,导致其他地方把姓名字段填写成了操作员 ...

  4. idea中springboot项目程序入口右键不显示run as的原因

    今天在idea中导入了springboot的项目,但是在程序的入口处右键单击没有出现run  as 的程序启动方式,主要原因在于idea中右面的maven projects中没加载项目,需要点击“+“ ...

  5. Springboot入门程序

    springboot简化之前的很多xml文件,不需要大量配置xml文件,没有很多xml文件是多么的愉快 下面进入正题,演示简单的入门程序,虽然简单,但足以振奋初学者们 我新建的工程名叫hello,大家 ...

  6. sloop公共程序之总体描述

    1:功能需求 开发一个公共库文件sloop.c,实现三个常用功能以供其它模块调用.三个功能如下: 功能一:实现一般的信号监听,调用模块只需传入要监听的信号和相应的回调函数就可以在信号到时调用回调函数处 ...

  7. springboot 控制台程序读取配置文件(原创)

    首先新建一个springboot项目,此处省略. 1.新建一个application.properties person.name=kevin person.age=6 person.sex=male ...

  8. 把java(springboot)程序打包docker镜像

    前言:要在docker运行java(jar包)程序,就要把程序打包成docker镜像(以下简称镜像),可以先理解为镜像就是jar包 打包需要程序代码,java本身的打包环境(包括jdk和maven), ...

  9. SpringBoot 应用程序启动过程探秘

    概述 说到接触 SpringBoot 伊始,给我第一映像最深的是有两个关键元素: 对照上面的典型代码,这个两个元素分别是: @SpringBootApplication SpringApplicati ...

随机推荐

  1. deepin修改默认Python2到Python3

    第一步 打开终端 第二步 输入 sudo vi ~/.bashrc 然后你会看到如下界面: 切大写,输入E,进入如下界面,并在最后输入我已经输入的 alias python='python3' ,记住 ...

  2. JS formData

    有时候,我们需要使用formData来上传文件,并根据反馈的结果做不同的处理, 这个时候使用form来提交文件不方便 #perform 获取的的上传文件所用的input标签 var formData ...

  3. 利用Lua实现二叉查找树并进行各种遍历

    -- author : coder_zhang-- date : 2014-6-25 root = nil function insert_node(number) if root == nil th ...

  4. ecshop 广告调用的几种方式

    1,ECSHOP后台设置广告更换 前台调用 {insert name='ads' id=2 num=1} id值表达广告位置的id.num表示数量 2,在代码加函数 function getads($ ...

  5. Windows程序设计--(三)窗口与消息

    3.1 窗口的创建 3.1.1 系统结构概述 所谓「Windows给程序发送消息」,是指Windows呼叫程序中的一个函数,该函数的参数描述了这个特定消息.这种位于Windows程序中的函数称为「窗口 ...

  6. webstorm2018

    1.安装后修改hosts: windows\system32\drivers\etc   管理员权限修改 0.0.0.0 account.jetbrains.com 2. 选择activation c ...

  7. 大数据-hadoop学习记录

    hadoop 创始人 DogCutting 高效,可扩展性,高容错性,价格低廉的大数据软件处理架构 主要应用于数据分析.数据实时查询.数据挖掘领域 HDFS(HadoopDistributeFileS ...

  8. RabbitMQ数据同步一致性解决方案

    1.概述 我们知道在使用RabbitMQ时,生产者将消息发布出去之后,消息是否顺利到达broker代理服务器呢?默认情况下发布操作没有任何信息返回给生产者,也就是生产者是不知道消息有没有顺利到达bro ...

  9. USB接口外壳地和信号地间的处理

    USB外壳地和信号地之间串接1M电阻,并且还接一个0.01uf的电容到信号地,能否将一下这样处理的原理和目的: 1.将影响外壳的噪音滤除,不影响信号地: 2.迫使板子上电流是流入内部的信号地,而不是流 ...

  10. swagger集成到springBoot 项目中

    1 pom 文件加包依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>spring ...