新建文本文档

news2024/11/19 14:46:38

Spring Boot 加载外部配置文件


Spring Boot
允许你从外部加载配置,这样的话,就可以在不同的环境中使用相同的代码。支持的外部配置源包括:Java属性文件、YAML文件、环境变量、命令行参数。

用@Value注解可以将属性值直接注入到beans中。命令行参数以 -- 开头

配置文件加载的顺序如下:

  1. Application properties packaged inside your jar (application.properties and
    YAML variants)
  2. Profile-specific application properties packaged inside your
    jar (application-{profile}.properties and YAML variants)
  3. Application properties outside of your packaged
    jar (application.properties and YAML variants)
  4. Profile-specific application properties outside of your packaged
    jar (application-{profile}.properties and YAML variants)

应用程序启动的时候,Spring Boot
会自动从以下位置查找并加载 application.properties 和 application.yaml 文件:

  1. The classpath root
  2. The classpath /config package
  3. The current directory
  4. The /config subdirectory in the current directory
  5. Immediate child directories of the /config subdirectory

查找顺序按优先级来,后面的可以覆盖前面的。文件中的每一项会作为PropertySources被添加到Spring Environment

如果你不想用"application"作为配置文件名称,可以在环境属性中通过spring.config.name来指定。还可以使用spring.config.location来显式指定配置文件的位置(文件路径或目录用逗号分隔)

注意,spring.config.name 和 spring.config.location
必须定义为一个环境属性(通常是一个OS环境变量、一个系统属性或一个命令行参数)

如果 spring.config.location 指定的是一个目录,那么必须以 / 结尾

无论直接指定文件还是包含在目录中,配置文件必须在其名称中包含文件扩展名。通常,扩展名支持 .properties, .yaml, .yml

举个栗子

指定单个文件

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

指定多个位置

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

默认情况下,如果指定的位置不存在,则会报错。如果你不确定它是否存在,使用使用 optional: 前缀

例如:

optional:classpath:/custom-config/,optional:file:./custom-config/

Profile Specific Files

Spring Boot 会尝试加载按照命名规约 application-{profile} 的文件,我们把这样的文件称为Profile-specific文件。

例如,如果你激活了一个名称为prod的profile,并且使用YAML文件,那么 application.yml 和 application-prod.yml 都会被尝试加载。

Profile-specific文件必须要和application.properties在相同的位置,而且profile-specific文件中的配置项会覆盖非profile-specific文件中相同的配置项。如果有多个profile-specific文件被激活,则后面会覆盖前面的。

举个例子,假设spring.profiles.active=prod,live,那么application-prod.properties中的配置项会被application-live.properties中的同名配置项覆盖。如果没有明确指定激活哪个profile,则application-default会被考虑激活。

YAML 文件

考虑下面的配置文件

hello:   world: "hehe"  my:   roles:     - "admin"     - "guest"

转换成properties文件应该是:

| hello.world=hehe
m my.roles[0]=admin

m my.roles[1]=guest

Spring Framework提供了两个方便的类,可以用来加载YAML文档。YamlPropertiesFactoryBean 将 YAML 作为
Properties 加载,而 YamlMapFactoryBean 将 YAML 作为一个 Map 加载。

可以用@Value注解将属性值注入到bean中

@Value("${hello.world}")  private String wahaha;   @Value("${my.roles[1]}")  private String roles1;

划重点

1、支持四种外部配置源:Java属性文件、YAML文件、环境变量、命令行参数;
2、配置文件查找位置,依次为:
  (1) classpath 根路径
  (2) classpath 根路径下config目录
  (3) jar包当前目录
  (4) jar包当前目录的config目录
  (5) /config子目录的直接子目录
3、配置文件加载顺序:
  (1) 当前jar包内部的application.properties和application.yml
  (2) 当前jar包内部的application-{profile}.properties 和 application-{profile}.yml
  (3) 引用的外部jar包的application.properties和application.yml
  (2) 引用的外部jar包的application-{profile}.properties 和 application-{profile}.yml
4、后面的可以覆盖前面的同名配置项

Image

https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config-files

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/157114.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【win11环境编译安装deformable Detr的MultiScaleDeformableAttention模块】

Microsoft Visual C 14.0 is required.1.Compiling CUDA operators2.安装Build Tools for Visual Studio3.安装合适的cuda4.编译1.Compiling CUDA operators cd ./models/ops sh ./make.sh # unit test (should see all checking is True) python test.pyNote: win11 or win10…

经认定的闵行区企业技术中心给予10万元资助

闵行区企业技术中心一、主管部门闵行区经济委员会二、政策依据《闵行区关于推进先进制造业高质量发展的若干产业政策意见》(闵府规发〔2020〕5号)《闵行区企业技术中心认定管理办法》(闵经委规发〔2021〕2号)《关于申报认定2022年…

搭建Go环境 03

1、windows下搭建go环境 1、介绍SDK 1、SDK(软件开发工具包) 2、SDK是给开发人员使用的,其中包含了对应开发语言的工具包 2、下载SDK Go官方镜像站(国内用户推荐): https://golang.google.cn/dl/ 官网下载 https://golang.org/dl/ # 安装事项…

【参考答案】java基础练习:变量、数据类型、输入、输出、运算符

练习1:判断输入的值是否是偶数,另外,要处理输入错误 (目的:熟悉输入、输出,特别是Scanner对象的方法) package com.qzcsbj;import java.util.Scanner;public class Test {public static void main(String[] args) {Sca…

Hudi集成Spark(一)Spark Shell方式

文章目录环境准备安装 Spark启动 Hadoop(略)spark-shell 方式启动 spark-shell插入数据查询数据查询数据更新数据增量查询指定时间点查询删除数据覆盖数据环境准备 安装 Spark 1)Hudi 支持的 Spark 版本 HudiSupported Spark 3 version0.1…

131页8万字数字化矿山整体解决方案

【版权声明】本资料来源网络,知识分享,仅供个人学习,请勿商用。 【侵删致歉】如有侵权请联系小编,将在收到信息后第一时间删除! 完整资料领取见文末,部分资料内容: 目 录 1、煤矿综合自动化系统…

两台 mac 通过 scp 命令快速传输数据

这两天由于电脑进水了,所以申请换了一台 mac 电脑,所以想把老电脑的数据拷贝到新电脑,折腾了半天,最后还是发现 scp 命令最好用。 使用 「scp 命令方式」之前尝试的其他方法 1、隔空投送 刚开始使用那个隔空投送功能,但…

数据结构与算法(一)——时间复杂度和空间复杂度

时间复杂度 1、概念引入 先说结论:时间复杂度是用来估计算法运行时间的一个式子(单位)。 例如:这四组代码,哪组运行时间最短? q:我们该用什么方式来体现算法运行的快慢? a&#…

安卓apk包破解

安卓apk包破解前言一、前置工作二、正式开始前言 拿到安卓的apk包如何,如何破解呢。流程如下 一、前置工作 拿到一个apk文件,修改其后缀为zip 例如: test.apk > test.zip 使用解压工具进行解压。解压后如图 获取到原始文件目录&…

Django项目——通过APIView实现API访问,增删改查数据库

前提 该文章在已有项目的基础上进行修改 https://blog.csdn.net/qq_38122800/article/details/128583379?spm1001.2014.3001.5502 1、配置序列化器 序列化器包含序列化和反序列化两个过程,简单点理解就是 序列化 : 将从数据库中查的数据变为前端页面可以接受的json数据 反…

机器学习的逻辑回归(Logistic)的实例————预测学生是否被录取

目录要求代码1. 导入模块2. 导入数据3. 求解theat的最优值,画出样本的位置和决策边界。4. 画出迭代函数随迭代次数变化的曲线,代价函数最终的收敛值5.比较三种学习率的代价函数随迭代次数变化的曲线5.1 学习率为0.00035.2 学习率为0.00055.3 学习率为0.00001要求 代码 1. 导入…

PySpark和RDD对象详解

目录 一.了解Spark、PySpark Spark是什么 Python on Spark Pyspark 小结 二.构建PySpark执行环境入口对象 PySpark的编程模型 小结 三.RDD对象 python数据容器转RDD对象 注意 演示 读取文件转RDD对象 演示 一.了解Spark、PySpark Spark是什么 定义:Apache Spark是用…

计算机组成原理【2】

文章目录一 计算机系统的层次结构1.1 思维导图1.2 计算机机器的五个层次1.3 三种级别的语言1.4 区分计算机组成原理和计算机体系二 计算机性能指标2.1 思维导图2.2 主存储器性能指标2.3 CPU性能指标2.4 系统整体的性能指标2.5 系统整体性能指标【动态测试】三 进位计数制3.1 思…

springboot整合opencv进行灰度图像与RGB图像互转

问题: 在开发过程中遇到一个问题,需要在图片上加上数据(原卷留痕),由于图片是灰度的,无法进行彩色编辑,需要将灰度图片转成RGB图片,才能进行彩色编辑,于是想到用opencv进…

Grafana 告警模块介绍

Grafana 系列文章,版本:OOS v9.3.1 Grafana 的介绍和安装Grafana监控大屏配置参数介绍(一)Grafana监控大屏配置参数介绍(二)Grafana监控大屏可视化图表Grafana 查询数据和转换数据Grafana 告警模块介绍 Gra…

Java对接JeePay支付、转账实现以及回调函数

最近公司对接了第三方支付平台JeePay,看到网上文章比较少,给大家发一篇对接微信支付的吧,支付宝也一样,更换里面的参数即可,官方文档地址:系统介绍 - 计全文档,具体的服务需要大家去搭建&#x…

为ABP新增手机验证模块

当前手机验证基本是标配,但Abp自身并没有实现这个功能,于是有了通过自定义模块实现的想法。 经过研究,发现要实现这个,只要重写和替换包含ReplaceEmailToUsernameOfInputIfNeeds方法的类就可以了。但要实现这个,首先要…

sql server提供三种常用截取字符串方法,LEFT()、RIGHT()、SUBSTRING()

一、sql server提供了三种常用截取字符串方法,LEFT()、RIGHT()、SUBSTRING() 1、LEFT()函数语法:LEFT(character,integer) 注释:参数1:要截取的字符串,参数2:截取字符个数说明:返回从字符串左边…

你的 VS Code 扩展值得信赖吗?

Aqua Nautilus 研究人员最近发现,攻击者可以轻松地冒充流行的 Visual Studio Code 扩展并诱骗不知情的开发人员下载它们。VSCode 是迄今为止最受欢迎的 IDE;StackOverflow 的一项调查指出,其目前已被 74.48% 的开发人员所使用。VSCode 的强大…

SPDK技术浅析

目录SPDK基础知识SPDK架构SPDK使用rpc后台启动基础机制分析后端vhost异步I/O写该篇的来由是因为翻阅到了TriCache: A User-Transparent Block Cache Enabling High-Performance Out-of-Core Processing with In-Memory Programs文章,其中对SPDK的运用的炉火纯青&…