多环境开发-Profiles

news2025/3/19 4:13:41

在实际的项目开发中,我们通常会涉及多个环境,如开发环境(dev)、测试环境(test)和生产环境(pro)。在不同的环境下,程序的配置信息会有所不同,例如连接的数据库肯定不一样。

一、多环境配置的基本概念

Spring Boot 的多环境配置主要依赖于 application.ymlapplication.properties 文件以及 spring.profiles.active 属性。通过激活不同的环境配置文件,我们可以为不同环境设置不同的配置参数。

二、创建多环境配置文件

在 Spring Boot 项目中,我们可以在 src/main/resources 目录下创建多个环境配置文件,文件命名规则如下:

  • application-dev.yml:开发环境配置文件

  • application-test.yml:测试环境配置文件

  • application-pro.yml:生产环境配置文件

示例配置文件

1. 开发环境配置文件(application-dev.yml
spring:
  application:
    name: my-service
  profiles:
    active: dev
  datasource:
    url: jdbc:mysql://localhost:3306/mydb_dev
    username: dev_user
    password: dev_password
    driver-class-name: com.mysql.cj.jdbc.Driver
logging:
  level:
    root: DEBUG
2. 测试环境配置文件(application-test.yml
spring:
  application:
    name: my-service
  profiles:
    active: test
  datasource:
    url: jdbc:mysql://localhost:3306/mydb_test
    username: test_user
    password: test_password
    driver-class-name: com.mysql.cj.jdbc.Driver
logging:
  level:
    root: INFO
3. 生产环境配置文件(application-pro.yml
spring:
  application:
    name: my-service
  profiles:
    active: pro
  datasource:
    url: jdbc:mysql://pro-db-server:3306/mydb_pro
    username: pro_user
    password: pro_password
    driver-class-name: com.mysql.cj.jdbc.Driver
logging:
  level:
    root: ERROR

三、激活特定环境

1. 通过命令行激活

在运行 Spring Boot 应用时,可以通过命令行参数激活特定的环境。例如:

# 激活开发环境
java -jar my-service.jar --spring.profiles.active=dev

# 激活测试环境
java -jar my-service.jar --spring.profiles.active=test

# 激活生产环境
java -jar my-service.jar --spring.profiles.active=pro

2. 通过环境变量激活

你也可以通过设置环境变量来激活特定的环境。例如,在 Linux 系统中,可以使用以下命令:

# 设置环境变量
export SPRING_PROFILES_ACTIVE=dev

# 启动应用
java -jar my-service.jar

3. 通过配置文件激活

application.ymlapplication.properties 文件中直接指定激活的环境:

spring:
  profiles:
    active: dev    #配置文件名称组成里面的环境名称部分

四、分组管理配置文件

为了更好地管理多环境配置,我们可以将不同环境的配置文件分组管理。例如,将数据库配置、日志配置等分别放在不同的文件中。

示例:分组管理

1. 数据库配置文件(application-datasource.yml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: db_user
    password: db_password
    driver-class-name: com.mysql.cj.jdbc.Driver
2. 日志配置文件(application-logging.yml
logging:
  level:
    root: INFO

然后,在不同环境的配置文件中引入这些分组配置文件:

这样active激活的就不是单个文件了,而是激活的是组的名称

开发环境配置文件(application-dev.yml
spring:
  application:
    name: my-service
  profiles:
    active: dev 
    group:
     "dev": datasource,logging
测试环境配置文件(application-test.yml
spring:
  application:
    name: my-service
  profiles:
    active: test
    group:
     "test": datasource,logging
生产环境配置文件(application-pro.yml
spring:
  application:
    name: my-service
  profiles:
    active: pro
    group:
     "pro": datasource,logging

五、注意事项

  1. 敏感信息管理:在生产环境中,避免将敏感信息(如数据库密码)直接写入配置文件。可以使用加密工具或环境变量来管理这些敏感信息。

  2. 配置文件优先级:Spring Boot 会按照以下顺序加载配置文件:

    • 命令行参数

    • 环境变量

    • application.ymlapplication.properties 文件

    • 激活的环境配置文件(如 application-dev.yml

  3. 配置文件的命名规范:确保配置文件的命名规范,避免因文件名错误导致配置加载失败。

六、总结

通过本文的介绍,我们了解了 Spring Boot 多环境开发的基本使用方法和分组管理技巧。合理使用多环境配置可以提高开发效率,减少环境切换时的配置错误。希望本文对你的项目开发有所帮助。

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

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

相关文章

《TCP/IP网络编程》学习笔记 | Chapter 18:多线程服务器端的实现

《TCP/IP网络编程》学习笔记 | Chapter 18:多线程服务器端的实现 《TCP/IP网络编程》学习笔记 | Chapter 18:多线程服务器端的实现线程的概念引入线程的背景线程与进程的区别 线程创建与运行pthread_createpthread_join可在临界区内调用的函数工作&#…

MambaVision:一种Mamba-Transformer混合视觉骨干网络

摘要 我们提出了一种新型混合Mamba-Transformer主干网络,称为MambaVision,该网络专为视觉应用而设计。我们的核心贡献包括重新设计Mamba公式,以增强其对视觉特征的高效建模能力。此外,我们还对将视觉Transformer(ViT&…

深度学习-服务器训练SparseDrive过程记录

1、cuda安装 1.1 卸载安装失败的cuda 参考:https://blog.csdn.net/weixin_40826634/article/details/127493809 注意:因为/usr/local/cuda-xx.x/bin/下没有卸载脚本,很可能是apt安装的,所以通过执行下面的命令删除: a…

学习单片机需要多长时间才能进行简单的项目开发?

之前有老铁问我,学单片机到底要多久,才能进行简单的项目开发?是三个月速成,还是三年磨一剑? 今天咱们就来聊聊这个话题,我不是什么高高在上的专家,就是个踩过无数坑、烧过几块板子的“技术老友”…

stm32 L432KC(mbed)入门第一课

目录 一. 前言 二. 专栏意义 三. MS入门第一课 一. 前言 新的一年MS课程又开始了,同时也到了该专栏的第三个年头。在前两年中,该专栏帮助了很多第一次接触单片机的同学。其中,有的同学订阅专栏是为了更好的完成并且通过MS这门课程&#xf…

批量给 Excel 添加或删除密码保护|Excel 批量设置打开密码和只读密码

我们在将 Excel 文档发送给第三方或者进行存档的时候,对 Excel 文档添加密码保护是非常重要的一个操作。添加保护后的 Excel 文档。就只能有相应权限的用户才能够打开或者编辑操作。尤其是当我们 Excel 文档中内容非常敏感非常重要的时候,添加保护就显得…

4.JVM-垃圾回收介绍

记录个人学习中记录笔记,如有错误请您指正,谢谢🙏 垃圾回收器发展史 传统垃圾回收: 分代回收 不同代有不同的垃圾回收机制 保底 标记清除算法 垃圾识别算法 引用计数法 缺陷:下图2 出现循环引用 无法解决 可达性分析 大部分(Java,pytho…

Redis-锁-商品秒杀防止超卖

一、秒杀(Seckill)​ 1. ​定义 ​秒杀:短时间内(如1秒内)大量用户同时抢购 ​限量低价商品 的营销活动。​典型场景:双11热门商品抢购、小米手机首发、演唱会门票开售。 2. ​技术挑战 挑战点说明后果…

第一个vue项目

项目目录 启动vue项目 npm run serve 1.vue.config.js文件 (CLI通过vue-cli-serve启动项目,解析配置配置文件vue-condig-js) // vue.config.js //引入path板块,这是Node.js的一个内置模块,用于处理文件路径,这里引用…

基于CNN的多种类蝴蝶图像分类

基于CNN的多种类蝴蝶图像分类🦋 基于卷积神经网络对64992786张图像,75种不同类别的蝴蝶进行可视化分析、模型训练及分类展示 导入库 import pandas as pd import os import matplotlib.pyplot as plt import seaborn as sns import numpy as np from …

Unity插件-适用于画面传输的FMETP STREAM使用方法(三)基础使用

目录 一、插件介绍 二、组件介绍 三、Game View Streaming 1、使用 FM Network UDP 的基本设置 Server Scene Client Scene 2、使用使用 FM WebSocket 的基本设置 四、Audio Streaming 五、Microphone Streaming 一、插件介绍 ​​​​​​Unity插件-适用于画面传输的…

微信小程序wx.request接口报错(errno: 600001, errMsg: “request:fail -2:net::ERR_FAILED“)

来看看报错 报错如下: 请求发送部分,代码如下: uni.request({url: self.serverUrl "/getRealName",method: GET,data: {"code": self.info.code,},header: {"Authorization": uni.getStorageSync(tokenHead) uni.getStorageSync(token)}}…

基于Python+MySQL编写的(WinForm)图书管理系统

一、项目需求分析 1.1 项目介绍 项目背景 图书馆管理系统是一些单位不可缺少的部分,书籍是人类不可缺少的精神食粮,尤其对于学校来说,尤其重要。所以图书馆管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管…

[贪心算法] 摆动序列

1.解析 这里我们的贪心体现在,这里我们只需要找到每一个拐点位置的数字即可, 证明: 当我们在A点时,我们下一步的选择有四种 A到D这个线段内的数字(不包括D)选择D点D到F的点F之后的点 对于A到D来说&#xf…

WPF未来展望:紧跟技术发展趋势,探索新的可能性

WPF未来展望:紧跟技术发展趋势,探索新的可能性 一、前言二、WPF 与.NET 技术的融合发展2.1 拥抱.NET Core2.2 利用.NET 5 及后续版本的新特性 三、WPF 在新兴技术领域的应用拓展3.1 与云计算的结合3.2 融入物联网生态 四、WPF 在用户体验和设计方面的创新…

低空经济腾飞:无人机送货、空中通勤,未来已来

近年来,低空经济逐渐成为社会关注的焦点。从无人机送货到“空中的士”,再到飞行培训的火热进行,低空经济正迎来前所未有的发展机遇。随着技术进步和政策支持,这一曾经看似遥远的未来场景,正逐步变为现实。 低空经济如何…

QT编译器mingw与msvc区别及环境配置

一.QT编译器mingw与msvc主要区别 二.QT开发环境配置 1. MinGW 配置 安装步骤: 通过 Qt 官方安装器 安装时勾选 MinGW 组件(如 Qt 6.7.0 MinGW 64-bit)。 确保系统环境变量包含 MinGW 的 bin 目录(如 C:\Qt\Tools\mingw1120_64…

【css酷炫效果】纯CSS实现进度条加载动画

【css酷炫效果】纯CSS实现进度条加载动画 缘创作背景html结构css样式完整代码基础版进阶版 效果图 通过CSS渐变与背景位移动画,无需JavaScript即可创建流体动态进度条。 想直接拿走的老板,链接放在这里:https://download.csdn.net/download/u…

Feedback-Guided Autonomous Driving

Feedback-Guided Autonomous Driving idea 问题设定:基于 CARLA 的目标驱动导航任务,通过知识蒸馏,利用特权智能体的丰富监督信息训练学生传感器运动策略函数 基于 LLM 的端到端驱动模型:采用 LLaVA 架构并添加航点预测头&#…

图解AUTOSAR_CP_WatchdogDriver

AUTOSAR WatchdogDriver模块详解 AUTOSAR MCAL层看门狗驱动模块详细解析 目录 1. 模块概述2. 架构位置 2.1. 组件架构 3. 主要功能4. API接口5. 配置参数 5.1. 配置模型 6. 错误代码7. 状态管理 7.1. 状态机 8. 处理流程 8.1. 活动流程 9. 操作序列 9.1. 典型操作序列 10. 硬件…