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

SpringBoot 的多配置文件

文章目录

    • SpringBoot 的多配置文件
      • spring.profiles.active 配置
      • @Profile 和 @ActiveProfiles 注解

SpringBoot 的多配置文件

spring.profiles.active 配置

默认情况下,当你启动 SpringBoot 项目时,会在日志中看到如下一条 INFO 信息:

No active profile set, falling back to default profiles: default

image.png

这条消息是在告诉你,由于你没有激活、启用某个配置文件,SpringBoot 使用了默认的配置文件,也就是 application.propertiesapplication.yml当然,这并不是什么错误。

SpringBoot 允许我们的项目提供多配置文件,并『激活、启用』其中的某一个。这些配置文件的命名规则为:application-xxx.propertiesapplication-xxx.yml

提供多个配置文件之后,你在 SpringBoot 默认加载的配置文件 application.propertiesapplication.yml 中只用写一个配置项,用以激活、启用某个 .properties.yml 即可。例如:

spring:profiles:active: dev

上例中的 dev 就是 application-xxx.propertiesapplication-xx.yml 中的那个 xxx 。

现在你再启动 SpringBoot,你会看到如下的 INFO 信息:

The following profiles are active: dev

这表示 SpringBoot 本次启动使用的就是这个配置文件。

@Profile 和 @ActiveProfiles 注解

了解

@Profile 注解配合 spring.profiles.active 参数,也可以实现不同环境下(开发、测试、生产)配置参数的切换。

另外,@ActiveProfiles 注解(在测试环境中)可以起到 spring.profiles.active 参数的作用。

@Configuration
public class MyConfiguration {@Bean@Profile("xxx")public Human tommy() {return new Human("tom", 20);}@Bean@Profile("yyy")public Human jerry() {return new Human("jerry", 19);}}

在上面的配置中:

  • 存在 2 套配置:xxxyyy
  • name 为 tommy 的 Human Bean 仅存在于 xxx 的配置套餐中;
  • name 为 jerry 的 Human Bean 仅存在于 yyy 的配置套餐中;

在 application.yml 配置文件通过 active 配置激活启动一个:

spring:profiles:active: yyy

我们可以在 JUnit 中验证结果:

@SpringBootTest
class AppTest {@Autowiredprivate Human human;@Testpublic void demo() {System.out.println(human);  // 这里输出的是 jerry Human Bean}
}

在测试类的使用中,你也可以将 application.yml 中的 active 配置项去掉,转而在测试类的头上使用 @ActiveProfiles 注解,也能起到同样效果:

@SpringBootTest
ActiveProfiles(profiles = "xxx")
class AppTest {...
}

相关文章:

SpringBoot 的多配置文件

文章目录 SpringBoot 的多配置文件spring.profiles.active 配置Profile 和 ActiveProfiles 注解 SpringBoot 的多配置文件 spring.profiles.active 配置 默认情况下,当你启动 SpringBoot 项目时,会在日志中看到如下一条 INFO 信息: No act…...

[Java基础揉碎]网络相关概念

目录 网络通信 网络 ip地址 ​编辑 域名 ​编辑 网络协议 TCP和UDP 网络编程比较重要的的InetAddress类 Socket ​编辑 tcp字节流编程 案例一 案例二​编辑 案例三 网络上传文件 ​编辑​编辑 ​编辑 netstat tcp网络通信客户端也是通过端口和服务端进行通讯的…...

UE5 Sequencer 使用指导 - 学习笔记

https://www.bilibili.com/video/BV1jG411L7r7/?spm_id_from333.337.search-card.all.click&vd_source707ec8983cc32e6e065d5496a7f79ee6 Sequencer 01 1.1 调整视口 调整窗口数量 调整视口类型为Cinematic视口 视口显示网格,或者条件参考线 1.2 关卡动画与…...

Web前端项目源码:深入解析与未来探索

Web前端项目源码:深入解析与未来探索 Web前端项目源码,如同隐藏在数字世界中的宝藏,蕴含着丰富的技术与智慧。它是构建现代网页应用的核心,也是实现用户交互和界面呈现的关键所在。本文将从四个方面、五个方面、六个方面和七个方…...

MyBatis的配置文件,即:src->main->resources的配置

目录 1、properties 标签 1.1 mybatis-config.xml 1.2 db.properties 1.3 在SqlMapConfig.xml 中 引入数据库配置信息 2、typeAliases 标签 2.1 定义别名 2.2 使用别名 3、Mappers标签 作用:用来在核心配置文件中引入映射文件 引入方式,有以下…...

completefuture造成的rpc重试事故

前言 最近经历了一个由于 completefuture 的使用,导致RPC重试机制触发而引起的重复写入异常的生产bug。复盘下来,并非是错误的使用了completefuture,而是一些开发时很难意识到的坑。 背景 用户反馈通过应用A使用ota批量升级设备时存在概率…...

6月11号作业

思维导图 #include <iostream> using namespace std; class Animal { private:string name; public:Animal(){}Animal(string name):name(name){//cout << "Animal&#xff1b;有参" << endl;}virtual void perform(){cout << "讲解员的…...

探究Vue源码:深入理解diff算法

前言 在Vue中 组件初次渲染时&#xff0c;会调用 render 函数生成初始的虚拟 DOM 树。 当组件的状态发生变化时&#xff0c;Vue 会重新调用 render 函数生成新的虚拟 DOM 树。 而Diff 算法是用来比较新旧虚拟 DOM 树的差异&#xff0c;并且只对差异部分进行更新的算法,从而尽量…...

qt自适应图片

在 Qt 中&#xff0c;通过重写 paintEvent 方法来添加自适应背景图片的过程如下&#xff1a; 创建一个自定义的 QWidget 子类。重写 paintEvent 方法&#xff0c;在该方法中使用 QPainter 绘制背景图片。使用 QPixmap 加载图片&#xff0c;并调整图片的大小以适应窗口的大小。…...

【区块链】解码拜占庭将军问题:区块链共识机制的哲学基石

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 解码拜占庭将军问题&#xff1a;区块链共识机制的哲学基石引言一、拜占庭将军问…...

MCK主机加固:智能科技,构筑网络安全的铜墙铁壁

在数字化转型的浪潮中&#xff0c;企业服务器的安全已成为维护业务连续性和保护数据资产的关键。MCK主机加固产品&#xff0c;以其创新技术&#xff0c;为企业提供了一个全面、智能、高效的安全解决方案。 一、智能安全监测 MCK主机加固产品采用深度学习算法&#xff0c;能够…...

OpenCV 双目相机标定

文章目录 一、简介1.1单目相机标定1.2双目相机标定二、实现代码三、实现效果参考资料一、简介 1.1单目相机标定 与单目相机标定类似,双目标定的目的也是要找到从世界坐标转换为图像坐标所用到的投影P矩阵各个系数(即相机的内参与外参)。具体过程如下所述: 1、首先我们需要…...

WPF/C#:异常处理

什么是异常&#xff1f; 在C#中&#xff0c;异常是在程序执行过程中发生的特殊情况&#xff0c;例如尝试除以零、访问不存在的文件、网络连接中断等。这些情况会中断程序的正常流程。 当C#程序中发生这种特殊情况时&#xff0c;会创建一个异常对象并将其抛出。这个异常对象包…...

2024年跨平台应用解决方法

个人博客:Sekyoro的博客小屋 个人网站:Proanimer的个人网站 很久没有写这类high-level的文章了,本身这类框架就一直层出不穷,但是其中历久弥坚,坚韧不拔的框架又有多少呢? 首先考虑到学习成本以及掌握一些编程语言在工作、学习生态上的价值,给这些东西适用生态划分一下. Reac…...

人工智能ChatGPT的多种应用:提示词工程

简介 ChatGPT 的主要优点之一是它能够理解和响应自然语言输入。在日常生活中&#xff0c;沟通本来就是很重要的一门课程&#xff0c;沟通的过程中表达的越清晰&#xff0c;给到的信息越多&#xff0c;那么沟通就越顺畅。 和 ChatGPT 沟通也是同样的道理&#xff0c;如果想要 …...

OceanBase v4.2 解读:tenant=all 语义优化,提升易用性

1 背景 1.1 租户类型及特点 OceanBase中有三种类型的租户&#xff1a; sys租户&#xff1a;集群默认创建&#xff0c;生命周期与集群相一致&#xff0c;管理集群和其他租户&#xff0c;具有较高的地位。用户租户&#xff1a;用户创建的业务租户或普通租户&#xff0c;用于运…...

理论和实验

一、理论和实验的关系 (一)理论可以指导实验 理论家提出理论和猜想&#xff0c;实验家就可以做个实验来验证是否适用。 (二)实验可以提升理论认识 实验家通过做实验&#xff0c;观察实验过程和结果后&#xff0c;如果发现和理论预测有误差&#xff0c;那么理论家就能根据新发现…...

Linux 常用命令 - userdel 【删除用户】

简介 userdel 这个命令源自于 “user delete”,即用户删除。这个命令主要用于在 Linux 系统中删除用户账户及其相关文件。当管理员需要移除一个用户及其在系统中的所有踪迹时,会用到这个命令。 使用方式 userdel [选项] 用户名常用参数 -f:强制删除用户,即使用户当前已登…...

等保测评和安全运维

# 等保测评与安全运维&#xff1a;构建企业网络安全的双重保障 引言 在数字化时代&#xff0c;企业面临着日益复杂的网络安全威胁。为了应对这些挑战&#xff0c;企业不仅要实施有效的安全运维措施&#xff0c;还需要通过等保测评确保其信息系统符合国家的安全标准。本文将探讨…...

Java课程设计:基于Java+Swing+MySQL的图书管理系统(内附源码)

文章目录 一、项目介绍二、项目展示三、源码展示四、源码获取 一、项目介绍 图书管理系统是一个常见的软件项目,广泛应用于图书馆、学校、企业等需要管理图书资源的场景。该系统通常涵盖图书信息录入、查询、借阅、归还等核心功能,是实现图书资源高效管理的重要工具。 随着信…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言&#xff1a; 在Java编程中&#xff0c;类的生命周期是指类从被加载到内存中开始&#xff0c;到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期&#xff0c;让读者对此有深刻印象。 目录 ​…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...