Spring Boot 多环境配置:YML 文件的三种高效方法

🌟 前言

欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍

  • 🤖 洛可可白:个人主页

  • 🔥 个人专栏:✅前端技术 ✅后端技术

  • 🏠 个人博客:洛可可白博客

  • 🐱 代码获取:bestwishes0203

  • 📷 封面壁纸:洛可可白wallpaper

在这里插入图片描述

文章目录

  • Spring Boot 多环境配置:YML 文件的三种高效方法
    • 1. 使用不同文件名进行环境配置
    • 2. 使用 YAML 文件内的部分进行环境配置
    • 3. 使用环境变量进行动态配置
    • 结语
    • 🎉 往期精彩回顾

Spring Boot 多环境配置:YML 文件的三种高效方法

在现代软件开发实践中,维护多个环境(如开发、测试和生产)已经成为标准操作。Spring Boot 通过其灵活的配置机制,使得在不同环境中管理应用设置变得简单。尤其是使用 YAML 文件进行配置,它提供了一种简洁、易读的方式来定义应用的配置。本文将探讨在 Spring Boot 中使用 YAML 文件进行多环境配置的三种方法。

1. 使用不同文件名进行环境配置

Spring Boot 允许你为不同的环境创建具有特定名称的配置文件。例如,你可以有 application.yml 用于默认配置,application-dev.yml 用于开发环境,application-test.yml 用于测试环境,以及 application-prod.yml 用于生产环境。

# application.yml (默认环境)
spring:datasource:url: ${DB_URL:localhost}# application-dev.yml (开发环境)
spring:profiles:active: devdatasource:url: localhost:3306/db_dev# application-test.yml (测试环境)
spring:profiles:active: testdatasource:url: localhost:3306/db_test# application-prod.yml (生产环境)
spring:profiles:active: proddatasource:url: localhost:3306/db_prod

你可以通过设置 spring.profiles.active 属性来激活特定的环境配置。例如,如果你想使用开发环境配置,可以在启动应用时添加 -Dspring.profiles.active=dev 参数。

2. 使用 YAML 文件内的部分进行环境配置

在单个 YAML 文件中,你可以使用“部分”来区分不同环境的配置。这种方法的好处是所有配置都集中在一个文件中,易于管理。

spring:profiles:include: common# 公共配置datasource:driver-class-name: com.mysql.cj.jdbc.Driver# 特定环境配置
---
spring:profiles: devdatasource:url: localhost:3306/db_devusername: dev_userpassword: dev_pass---
spring:profiles: testdatasource:url: localhost:3306/db_testusername: test_userpassword: test_pass---
spring:profiles: proddatasource:url: localhost:3306/db_produsername: prod_userpassword: prod_pass

在这个例子中,common 部分包含了所有环境共享的配置。每个 --- 分隔的块代表一个特定的环境配置。

3. 使用环境变量进行动态配置

Spring Boot 可以读取环境变量来动态设置配置。你可以在系统环境变量或启动参数中设置 SPRING_CONFIG_NAMESPRING_CONFIG_LOCATION 来指定配置文件的名称和位置。

例如,你可以创建一个 application-override.yml 文件来覆盖其他配置:

# application-override.yml
spring:datasource:username: override_userpassword: override_pass

然后,通过设置环境变量 SPRING_CONFIG_NAME=applicationSPRING_CONFIG_LOCATION=/path/to/config,Spring Boot 会加载 application.yml 和指定路径下的配置文件,并使用 application-override.yml 中的配置覆盖它们。

结语

Spring Boot 提供了灵活的配置机制来适应多环境开发的需求。通过使用不同的配置文件、YAML 文件内的部分,以及环境变量,你可以轻松管理和切换不同环境的配置。这些方法不仅提高了开发效率,也使得配置管理变得更加清晰和有序。无论你的项目需要支持多少种环境,Spring Boot 的配置系统都能够提供有效的解决方案。

如果对你有帮助,点赞👍、收藏💖、关注🔔是我更新的动力!👋🌟🚀

🎉 往期精彩回顾

Vue项目实战:基于用户身份的动态路由管理
Vite多环境配置与打包:灵活高效的Vue开发工作流
前端实现自动获取农历日期:探索JavaScript的跨文化编程
自定义滚动条样式:前端实现跨浏览器兼容
Windows Edge 兼容性问题修复:提升用户体验的关键步骤
Vue2和Vue3组件通信:父子与兄弟间的桥梁
无缝集成:使用Spring Boot和Vue实现头像上传与回显功能
前端开发全景指南:语言与框架的精粹
C语言开发实战:使用EasyX在Visual Studio 2022中创建井字棋游戏
前端与后端协同:实现Excel导入导出功能
Java日期格式化:掌握时间的艺术
正则表达式完全指南:语法、用法及JavaScript实例
正则表达式与JSON序列化:去除JavaScript对象中的下划线键名
探索async/await的魔力:简化JavaScript异步编程
JavaScript日期格式化:从原始值到用户友好的字符串
入门教程:Windows搭建C语言和EasyX开发环境
CentOS系统下Docker的安装教程
Spring Boot单元测试全指南:使用Mockito和AssertJ
Yarn简介及Windows安装与使用指南
H5实现3D旋转照片墙教程
Element-Plus 实现动态渲染图标教程

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

06节-51单片机-LCD1602调试工具

欢迎订阅专栏,持续为您更新! 1.LCD1602调试工具 使用LCD1602液晶屏作为调试窗口,提供类似printf函数的功能,可实时观察单片机内部数据的变换情况,便于调试和演示。 本文提供的LCD1602代码属于模块化的代码&#xff…

Java集合-泛型(Generic)

目录 1、泛型(Generic) 1.1 泛型方法 1.2 泛型类 1.3 泛型接口 1.4 泛型通配符 1、泛型(Generic) 当集合中存储的对象类型不同时,那么会导致程序在运行的时候的转型异常 import java.util.ArrayList; import java.util.Iterator; public class Demo5 { pub…

Samtec应用分享 | 汽车应用中的视觉系统

【前言】 视觉系统在未来的汽车设计中扮演着关键的角色。 在过去,一直是由驾驶员掌握和应对道路上的危险,但现代车辆在保障驾驶安全方面发挥着前所未有的作用。 视觉系统,无论是可见光摄像头还是先进的探测系统,如激光雷达&…

rk3588 安卓调试

rknn装上了android系统,用type-c usb连接上电脑,设备管理器发现了rk3588,但是Android Studio没有发现设备 后来怀疑是驱动没有安装,我用的驱动下载地址: 瑞芯微Rockchip驱动安装助手(适用于RK3308 RK3399等) Mcuzone…

ARP代理

10.1.0.1/8 和10.2.0.1/8是在同一个网段 10.1.0.2/16 和10.2.0.2/16 不在同一个网段 10.1.0.1/8 和10.1.0.2/16 是可以ping通的 包发出来了,报文有发出来,目的地址是广播包 广播请求,发到路由器的接口G 0/0/0 target不是本接口&#xff0…

pytorch Neural Networks学习笔记

(1)输入图像,13232,通道数1,高32,宽32 (2)卷积层1,滤波器的shape为6155,滤波器个数6,通道数1,高5,宽5。卷积层1的输出为62…

springboot整合dubbo实现RPC服务远程调用

一、dubbo简介 1.什么是dubbo Apache Dubbo是一款微服务开发框架,他提供了RPC通信与微服务治理两大关键能力。有着远程发现与通信的能力,可以实现服务注册、负载均衡、流量调度等服务治理诉求。 2.dubbo基本工作原理 Contaniner:容器Provider&#xf…

Spring Boot 处理过滤器(filter )中抛出的异常

前言: 在改造老项目登录功能的时候,使用了过滤器对 token 进行有效性验证,验证通过继续进行业务请求,验证不通过则抛出校验异常。 过程: 技术方案拟定后,就着手开始改造,一切都很顺畅&#x…

机器学习-11-基于多模态特征融合的图像文本检索

总结 本系列是机器学习课程的系列课程,主要介绍机器学习中图像文本检索技术。此技术把自然语言处理和图像处理进行了融合。 参考 2024年(第12届)“泰迪杯”数据挖掘挑战赛 图像特征提取(VGG和Resnet特征提取卷积过程详解&…

【ARFoundation自学01】搭建AR框架,检测平面点击位置克隆物体

Unity开发ARFoundation相关应用首先安装ARFoundation包 然后设置XR 1.基础AR场景框架搭建 2.一个基本的点击克隆物体到识别的平面脚本 挂在XROrigin上 脚本AppController 脚本说明书 ## 业务逻辑 AppController 脚本旨在实现一个基本的 AR 应用程序功能:用户通过…

Redis的Stream 和 实现队列的方式【List、SortedSet、发布订阅、Stream、Java】

Redis队列与Stream、Redis 6多线程详解 Redis队列与StreamStream总述常用操作命令生产端消费端单消费者消费组消息消费 Redis队列几种实现的总结基于List的 LPUSHBRPOP 的实现基于Sorted-Set的实现PUB/SUB,订阅/发布模式基于Stream类型的实现与Java的集成 消息队列问…

MaxCompute 近实时增全量处理一体化新架构和使用场景介绍

随着当前数据处理业务场景日趋复杂,对于大数据处理平台基础架构的能力要求也越来越高,既要求数据湖的大存储能力,也要求具备海量数据高效批处理能力,同时还可能对延时敏感的近实时链路有强需求,本文主要介基于 MaxComp…