当前位置: 首页 > 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的图书管理系统(内附源码)

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

量子互联网:原理、挑战与未来应用

1. 量子互联网的技术本质与核心价值量子互联网并非传统互联网的简单升级&#xff0c;而是一种基于量子力学原理的全新通信范式。其核心在于利用量子纠缠这一独特物理现象&#xff0c;实现传统通信手段无法企及的功能。在传统互联网中&#xff0c;信息以经典比特&#xff08;0或…...

大模型训练全流程拆解:7个阶段+12个关键参数,新手也能看懂

大模型训练全流程拆解:7个阶段+12个关键参数,新手也能看懂 副标题: 从0到1构建大模型的完整路径,附实战避坑指南 一、痛点:为什么大模型训练这么复杂? 很多开发者第一次接触大模型训练时,会被各种术语绕晕:预训练、SFT、RLHF、DPO、LoRA… 感觉像在看天书。 更糟糕的…...

【收藏干货】2026 版大模型推理底层原理拆解!吃透 Prefill/Decode 与 vLLM 核心优化

近两年大模型技术飞速迭代&#xff0c;全面重构了 AI 应用开发体系。日常开发中大家热议模型参数规模、Agent 智能体、多模态交互能力&#xff0c;可真正落地部署上线后&#xff0c;决定产品最终使用体验的核心&#xff0c;往往并非模型本身性能&#xff0c;而是容易被忽略的大…...

REFramework技术深度解析:企业级游戏引擎扩展框架的架构演进与设计哲学

REFramework技术深度解析&#xff1a;企业级游戏引擎扩展框架的架构演进与设计哲学 【免费下载链接】REFramework Mod loader, scripting platform, and VR support for all RE Engine games 项目地址: https://gitcode.com/GitHub_Trending/re/REFramework 在游戏开发领…...

SAS宏编程中IN运算符的三种实现方法与实战应用

1. 项目概述&#xff1a;从“硬编码”到“智能匹配”的宏编程跃迁在SAS宏编程的世界里&#xff0c;我们常常会遇到一个经典困境&#xff1a;如何优雅地处理一组离散的、但逻辑上同属一个类别的值&#xff1f;比如&#xff0c;你需要根据用户传入的省份名称&#xff0c;执行不同…...

3000+戴森球计划工厂蓝图终极指南:从新手到大师的完全解决方案

3000戴森球计划工厂蓝图终极指南&#xff1a;从新手到大师的完全解决方案 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints 还在为戴森球计划中复杂的工厂布局而头疼吗&#…...

在微服务架构中集成Taotoken实现智能客服路由与成本控制

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在微服务架构中集成Taotoken实现智能客服路由与成本控制 1. 场景与挑战 在电商这类业务场景中&#xff0c;智能客服能力通常被拆分…...

拒绝“人肉搬砖”!实测AI Agent如何重塑制造企业供应链自动管理

【摘要】 站在2026年5月的技术交汇点&#xff0c;全球制造业正经历从“自动化”向“智能化”的深度跃迁。面对制造企业供应链管理中长期存在的系统围墙、数据孤岛及信创适配难等沉疴顽疾&#xff0c;传统的RPA工具与API集成方案已显疲态。本期「企服AI产品测评局」深度实测发现…...

Wifite2 终极指南:快速掌握无线网络安全审计工具

Wifite2 终极指南&#xff1a;快速掌握无线网络安全审计工具 【免费下载链接】wifite2 Rewrite of the popular wireless network auditor, "wifite" 项目地址: https://gitcode.com/gh_mirrors/wi/wifite2 Wifite2 是一款功能强大的无线网络安全审计工具&…...

四大音乐平台一键解析:免费开源music-api打破会员壁垒

四大音乐平台一键解析&#xff1a;免费开源music-api打破会员壁垒 【免费下载链接】music-api Music API 项目地址: https://gitcode.com/gh_mirrors/mu/music-api 在音乐流媒体平台林立的今天&#xff0c;你是否曾被各大平台的会员壁垒所困扰&#xff1f;想听周杰伦的歌…...