当前位置: 首页 > news >正文

SpringBoot 如何将配置文件挂到 jar 包外面?

目录

    • 一、SpringBoot 指定配置文件路径:
      • 1)使用命令行参数:
      • 2)使用环境变量:
      • 3)使用外部配置文件:
    • 二、SpringBoot 配置文件生效的优先级排序:

一、SpringBoot 指定配置文件路径:

在 SpringBoot 中,可以将配置文件放在 jar 包外面,这样可以方便地修改配置而不需要重新打包和部署。

下面是指定配置文件目录的 几 种方法: (按生效优先级从高到低排序)

1)使用命令行参数:

在启动应用程序时,可以使用 --spring.config.location-Dspring.config.location 命令行参数来指定配置文件的路径,例如:(config 后面的 / 不可省略

java -jar test.jar --spring.config.location=/opt/app/config/

补充:FHS将/opt定义为 “为安装附加应用软件包而保留”。所以这里选择 /opt 文件夹来存放应用程序的配置文件。

2)使用环境变量:

可以设置 SPRING_CONFIG_LOCATION 环境变量来指定配置文件的路径,例如:

export SPRING_CONFIG_LOCATION=/opt/app/config/
java -jar test.jar

3)使用外部配置文件:

  • 方法一: 在应用程序(jar包)启动命令执行目录下 创建一个名为 config 的文件夹,然后将配置文件放在该文件夹中。

  • 方法二: 在应用程序(jar包)同级目录下 创建一个名为 config 的文件夹,然后将配置文件放在该文件夹中。在代码的配置文件 application.propertiesapplication.yml 中添加以下行:

spring.config.name=application
spring.config.location=classpath:/,file:./config/
  • 方法三: 在应用程序(jar包)同级目录下 直接放 propertiesyml 配置文件。

  • 方法四: 在应用程序(jar包)内部的 classpath同级目录下,创建 config 文件夹,然后放 propertiesyml 配置文件。

  • 方法五: 在应用程序(jar包)内部的 classpath同级目录下,然后直接放 propertiesyml 配置文件。

注意:以上方法可以组合使用,例如,可以在命令行参数和环境变量中同时指定配置文件的路径,执行时命令行参数的优先级最高。

二、SpringBoot 配置文件生效的优先级排序:

  1. java -jar 命令行中,通过 --spring.config.location 参数指定的方式优先级最高。

  2. 设置 SPRING_CONFIG_LOCATION 环境变量来指定配置文件的路径是次优先级。

  3. 在执行 java -jar 命令同级目录下的 config 文件夹是第三优先级。

    注意:如果 java -jar 命令不是在项目 jar 包 同级目录执行的话,在项目 jar 包同级目录下的 config 文件夹是不生效的。

  4. 项目 jar 包中 propertiesyml 文件中指定 spring.config.location 配置文件夹是第四优先级。

  5. 项目 jar 包同级下直接放 properties 文件是第五优先级,直接把配置文件放到 jar 包的同级目录。

  6. 项目内部的 classpath 同级 config 文件夹是第六优先级,在 classpath 下建一个 config 文件夹,然后把配置文件放进去。

  7. 项目内部的 classpath 同级放 properties 文件是最低优先级,是在 classpath 下直接放配置文件。

SpringBoot 默认是优先读取java -jar 命令同级目录下的一个 config/application.properties 文件的。

在项目内 src/main/resources 文件夹下创建的 application.properties 文件的优先级是最低的。

整理完毕,完结撒花~ 🌻





参考地址:

1.java配置文件放置到jar外_Spring Boot配置文件放在jar外部,https://blog.csdn.net/weixin_39885690/article/details/114888138

2.Spring Boot 把配置文件和日志文件放到jar外部,https://blog.csdn.net/weixin_45433031/article/details/127279358

相关文章:

SpringBoot 如何将配置文件挂到 jar 包外面?

目录一、SpringBoot 指定配置文件路径:1)使用命令行参数:2)使用环境变量:3)使用外部配置文件:二、SpringBoot 配置文件生效的优先级排序:一、SpringBoot 指定配置文件路径&#xff1…...

蓝桥杯C/C++b组第一题个人整理合集(5年真题+模拟题)

蓝桥杯C/Cb组填空第一题合集 前言 比赛标准的签到题,比赛时的第一题。不会考到什么算法,甚至都不需要你打代码。但有时候第一题都没做出来的确是非常挫灭信心 看了看历年题目。很多小陷阱也不少 今年的比赛也正好还有一个月,自己对填空题第…...

深入浅出PaddlePaddle函数——paddle.zeros

分类目录:《深入浅出PaddlePaddle函数》总目录 相关文章: 深入浅出PaddlePaddle函数——paddle.Tensor 深入浅出PaddlePaddle函数——paddle.ones 深入浅出PaddlePaddle函数——paddle.zeros 深入浅出PaddlePaddle函数——paddle.full 深入浅出Padd…...

[力扣sql]

题目 表: Person ---------------------- | 列名 | 类型 | ---------------------- | PersonId | int | | FirstName | varchar | | LastName | varchar | ---------------------- personId 是该表的主键列。 该表包含一些人的 ID 和他们的姓和名的信…...

Docker基本操作

目录 Docker基本操作 1、镜像操作 2、容器操作 3、数据卷(容器数据管理) 4、数据卷挂载 5、Dockerfile自定义镜像 Docker基本操作 1、镜像操作 镜像名称一般分两部分组成:[repository]:[tag]。 在没有指定tag时,默认是la…...

golang如何使用rocketmq 附加闭坑指南 建议收藏!!!

文章目录前言一、rocketmq是什么?二、rocketmq核心概念三、rocketmq核心应用四、go如何使用rocketmq总结前言 当我们的业务达到一定规模,很多业务需要解耦,以及需要流量削峰的时候,我们需要使用MQ来让我们系统能够正常运转。 一…...

C++实现的二叉树创建和遍历,超入门邻家小女也懂了

目录 二叉树 特点 性质 二叉树的创建 声明 创建 -> 成员运算符 批量创建 二叉树的遍历 先序遍历 中序遍历 后序遍历 层序遍历 树的相关术语 特殊二叉树 满二叉树 完全二叉树 二叉树 树(Tree)是n(n≥0)个节点的有限集。在任意一棵…...

如何写出高质量的业务接口

清晰的需求 需求要有文档;方便后续追溯或交接等需求是基础,必须详细;多和需求沟通确认,不可模糊、模棱两可,否则后续可能越错越远 抽象建模 分析需求;梳理清楚关联关系,建立数据模型和关联画E-R…...

3.8多线程

案例一-线程安全的单例模式(面试)是一种设计模式,设计模式针对写代码时的一些常见场景给出一些经典解决方案单例模式的两种典型实现饿汉模式懒汉模式饿汉的单例模式:比较着急去进行创建实例懒汉的单例模式,是不太着急创建实例,,只是在用的时候,才真正创建这个是类对象,也就是.c…...

图文讲解MongoDB该怎么安装

一、安装前必读 我这里是Centos7 Linux 内核 注意:本文的命令使用的是 root 用户登录执行,不是 root 的话所有命令前面要加 sudo 二、环境配置 2.1 停止防火墙 systemctl status firewalld #查看firewall systemctl stop firewalld …...

「ML 实践篇」机器学习项目落地

文章目录1. 项目分析1. 框架问题2. 性能指标2. 获取数据1. 准备工作区2. 下载数据3. 查看数据4. 创建测试集3. 数据探索1. 地理位置可视化2. 寻找相关性3. 组合属性4. 数据准备1. 数据清理2. Scikit-Learn 的设计3. 处理文本、分类属性4. 自定义转换器5. 特征缩放6. 流水线5. 选…...

c++面试技巧-基础篇3

1.面试官:什么是函数的重载? 应聘者:函数的重载就是允许使用同一个函数名来定义多个函数,但是这些函数的参数个数和类型不同。 2.面试官:如何引用一个已经定义过的全局变量? 应聘者:可以用引…...

MySQL OCP888题解044-从服务器上导入mysql模式数据后的权限问题

文章目录1、原题1.1、英文原题1.2、中文翻译1.3、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3.1、知识点1:mysqldump的--flush-privileges选项3.2、知识点2:mysqldump的--all-databases选项3.3、知识点3:mysqldump默认不转储的内容…...

实战小项目之视频监控(1-2)

实战小项目之视频监控(1-2) Nginx 移植 前面也给大家提到了,我们可以使用 Nginx 来搭建 RTMP 流媒体服务器,譬如你可以在一台公网 IP 主 机上搭建流媒体服务器,当然,笔者并没有这个条件;这里我…...

人工智能基础--AI作业1-ML基础

1.监督学习和无监督学习都是机器学习中常用的方法。监督学习是一种机器学习方法,其中机器学习算法根据给定的输入数据和其对应的输出标签进行训练,以学习如何预测新的输入数据的输出标签。简单来说,监督学习就是通过已知的数据进行学习&#…...

关于JS中this对象指向问题总结

一、前言 关于JS中this对象指向问题,相信做过项目的小伙伴多多少少都会遇到过,明明感觉代码写的没问题,可是运行的时候,就会报错,比如报错 xxx is not a function。 我最近也遇到了,百度学习了不少前辈对于…...

Codeforces Round 855 (Div. 3) A-E2

比赛链接:Dashboard - Codeforces Round 855 (Div. 3) - Codeforces A:模拟 题意:给定一个字符串,问这个字符串是不是猫叫。定义是猫叫得字符串: 1:必须由大写或小写得M(m),E&…...

Spark Yarn 运行环境搭建

文章目录Spark Yarn 运行环境搭建1、解压缩文件2、修改配置环境文件3、配置历史服务器Spark Yarn 运行环境搭建 1、解压缩文件 将spark3.2.3的压缩包上传到 linux /opt/software 目录下 输入命令: tar -zxvf spark-3.2.3-bin-hadoop3.2-scala2.13.tgz -C /opt/ 解…...

SpringMVC 页面跳转指南:转发和重定向的实现与比较

SpringMVC 是一款非常流行的 Java Web 框架,它提供了丰富的特性和功能,使得开发者可以轻松地开发 Web 应用程序。其中,转发和重定向是 SpringMVC 中非常常见的两个操作,它们可以用于控制请求的流转和页面的跳转。本文将深入探讨 S…...

ModStartCMS v5.9.0 后台浅色模式,系统样式升级

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市…...

2020蓝桥杯真题反倍数 C语言/C++

题目描述 给定三个整数 a,b,c,如果一个整数既不是 a 的整数倍也不是 b 的整数倍还不是 c 的整数倍,则这个数称为反倍数。 请问在 1 至 n 中有多少个反倍数。 输入描述 输入的第一行包含一个整数 n。 第二行包含三个整数a,b,c,相邻两个数之…...

PTA:L1-025 正整数A+B、L1-026 I Love GPLT、L1-027 出租(C++)

目录 L1-025 正整数AB 问题描述: 实现代码: L1-026 I Love GPLT 问题描述: 实现代码: L1-027 出租 问题描述: 实现代码: 原理思路: 出租那道题有点意思哈 L1-025 正整数AB 问题描述…...

状态机的Go语言实现版本

一、状态机 1. 定义 有限状态机(Finite-state machine, FSM),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 2. 组成要素 现态(src state):事务当前所处的状…...

第2章 线程安全与共享资源竞争

第2章 线程安全与共享资源竞争 2.1 synchronized同步介绍 synchronized要解决的是共享资源冲突的问题。当共享资源被任务使用时,要对资源提前加锁。所有任务都采用抢占模式,即某个任务会抢先对共享资源加上第一把锁。如果这是一个排他锁,…...

77. writerows写入多行

文章目录1. 目标任务2. 准备工作3. writerow单行写入4. writerows多行写入5. a以追加的模式写入值6. 总结1. 目标任务 新建【各班级成绩】文件夹; 在该文件夹下新建一个【1班成绩单.csv】文件; 在该文件中写入下面的内容: 成绩 姓名 刘一…...

STM32MP157-Linux输入设备应用编程-多点触摸屏编程

文章目录前言多点触摸屏tslib库简介tslib库移植tslib库函数使用打开触摸屏设备配置触摸屏设备打开并配置触摸屏设备读取触摸屏设备多点触摸屏程序编写触点数据结构体定义事件定义计算触点数量判断单击、双击判断长按、移动判断放大、缩小外部调用代码流程图(草图&am…...

mybatis-plus的一般实现过程(超详细)

MyBatis-Plus 是 MyBatis 的增强工具,在 MyBatis 的基础上提供了许多实用的功能,如分页查询、条件构造器、自动填充等。下面是 MyBatis-Plus 的完整代码实现流程: ①、引入 MyBatis-Plus 依赖 在 Maven 中,可以通过以下方式引入 …...

Spark(5):RDD概述

目录 0. 相关文章链接 1. 什么是RDD 2. RDD核心属性 3. 执行原理 0. 相关文章链接 Spark文章汇总 1. 什么是RDD RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是 Spark 中最基本的数据处理模型。代码中是一个抽象类&#x…...

面向对象 - 继承

Hello , 各位同学朋友大家好啊, 今天给大家分享的技术呢, 是面向对象三大特征之一的继承,我们今天主要按照以下几个点, 展开继承的讲解。目录 :* 继承的介绍* 继承的好处和弊端* 继承中成员访问特点 - 成员变量* 继承中成员访问特点 - 成员方法* 方法重写* 继承中成…...

计算机网络的166个概念你知道几个 第十二部分

计算机网络安全安全通信的四大要素:机密性、保温完整性、端点鉴别和运行安全性。机密性:报文需要在一定程度上进行加密,用来防止窃听者截取报文。报文完整性:在报文传输过程中,需要确保报文的内容不会发生改变。端点鉴…...