锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. 数据库
  4. Spring Boot 属性配置文件

Spring Boot 属性配置文件

0
  • 数据库
  • 发布于 2024-08-16
  • 0 次阅读
黄健
黄健

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net

声明

本文翻译自 Spring Boot Reference Guide (https://docs.spring.io/spring-boot/docs/2.1.3.RELEASE/reference/html) ,择其第 24.3. Application Property Files 以及 24.4. Profile-specific Properties。

应用属性文件

SpringApplication从application.properties文件载入属性时按以下位置读取并添加到 Spring Enviroment:

  1. 当前目录下/config中的子目录
  2. 当前目录(jar 所在目录)
  3. classpath:/config包
  4. classpath 根

上列按优先级从上到下排序(高优先级的会覆盖低优先级的属性)。

同样地也可以使用 YAML (.yml) 文件代替 .properties

如果不想使用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都是最先阶段被使用的,来决定哪些文件需要加载,所以都必须定义为环境属性(特别是操作系统环境变量、系统属性,或者命令行参数)。

如果spring.config.location包含目录(否则就是文件),则应当以/作为结尾(在应用运行中,位置之中的配置载入之前,包括 profile-specific 文件名,会附加由spring.config.name生成的名称)。在spring.config.location指定为文件的则不支持 profile-specific 形式,且会被其他任何 profile-specific 属性覆盖。

配置路径会以倒序查找。默认地,配置的路径是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.additional-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)。这些默认值之后就会在运行中被自定义路径中的不同文件覆盖。

如果使用环境变量而不是系统属性,由于大部分操作系统不允许英文句号分隔的键名,所以可以使用下划线代替(例如,SRPING_CONFIG_NAME代替spring.config.name)。

如果应用运行在容器中,那么 JNDI 属性(在java:comp/env)或者 servlet 上下文初始化参数会被代替使用,同样地有环境变量,系统属性。

Profile-specific 属性

除了application.properties文件,profile-specific 属性也可以通过命名格式定义:application-{profile}.properties。Environment有一组默认属性集合(默认地,为[default])被使用,如果没有指定激活的 profiles。也就是说,如果没有明确地激活 profiles,那么属性就从application-default.properties加载。
profile-specific 属性会从同一个位置加载为application.properties,且 profile-specific 文件总会覆盖非 profile-specific 的,无论 profile-specific 文件是在 jar 包之内还是之外。
如果有多个 profiles 被指定,则应用最后者胜出策略。例如,profiles 通过spring.profiles.active属性指定,那么会在那些通过SpringApplicationAPI 配置的最后添加,并依此排优先级。

如果在spring.config.location指定了任意文件,profiles-specific 形式文件则会被忽略。如果想同时使用 profile-specific 属性,那么就需要在spring.config.location中指定为目录。

参考

[1] Application Property Files
[2] Profile-specific Properties

推荐文章

AI 最佳实践全栈式从 0 到 1 开发个人博客系统

标签: #软件开发 1171 #JAVA 991
相关文章

深入理解MySQL InnoDB中的B+索引机制 2024-09-30 14:41

目录 一、InnoDB中的B+ 树索引介绍 二、聚簇索引 (一)使用记录主键值的大小进行排序

mysql中B+树的数据存储 2024-09-29 16:36

B+树索引基础分析 B+树 的定义 B+树是一种自平衡的树形数据结构,常用于数据库和操作系统的索引结构。它具有以下特点: 所有数据都存储在叶子节点,非叶子节点仅存储键值和子节点的指针。 叶子节点之间通过指针相互连接,形成一个有序链表,便于范围查询。 每个节点可以拥有多个键值,键值之间是有序的。 B+

MySQl索引事务(B树) 2024-09-29 16:36

目标: 索引 事务 1.索引 1.1概念 索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。 1.2作用 数据库中的表、数据、索引之间的关系,类似于书架上的图书、书籍内容和书籍目录的关系。 索引所起的作用类似书籍

MySQL数据库的备份与恢复 2024-09-26 17:57

MySQL数据库的备份与恢复 在现代信息时代,数据已成为企业和个人的重要资产,数据的安全性和可恢复性直接影响到业务的连续性和稳定性。MySQL作为广泛使用的关系型数据库管理系统,其数据的备份与恢复显得尤为重要。本文将详细探讨MySQL数据库的备份与恢复策略,包括备份的重要性、备份类型、常用备份方法及

MySQL中创建数据库和表 2024-09-26 17:57

在MySQL中创建数据库和表是数据库管理的基础步骤,它们构成了数据存储和操作的基础结构。下面,我将详细介绍如何在MySQL中创建数据库和表,包括创建数据库的基本语法、设计表的考虑因素、表的创建过程、数据类型和约束的使用等,力求内容详尽且不少于2000字。 一、创建数据库 在MySQL中,数据库是一个

MySQL数据库主从搭建(详细图文) 2024-09-28 15:11

MySQL数据库主从搭建(详细图文) 前言 主从原理: MySQL之间数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以"事件"的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.