3.5 实战:Spring Boot 实现系统多环境配置

news2024/12/24 8:45:07

第3章 Spring Boot 的系统配置

3.1 Spring Boot 系统配置文件
3.2 Spring Boot 自定义配置项
3.3 Spring Boot 其他配置
3.4 Spring Boot 日志配置
3.5 实战:Spring Boot 实现系统多环境配置

3.5 实战:Spring Boot 实现系统多环境配置

在实际项目开发的过程中,需要面对不同的运行环境,比如开发环境、测试环境、生产环境等,每个运行环境的数据库、Redis服务器等配置都不相同,每次发布测试、更新生产都需要手动修改相关系统配置。这种方式特别麻烦,费时费力,而且出错的概率极大。庆幸的是,Spring Boot 为我们提供了更加简单方便的配置方案来解决多环境的配置问题,下面就来演示 Spring Boot 如何实现系统多环境配置。

Spring Boot 实现系统多环境配置的步骤:

  1. 多环境的配置:在项目的 resources 目录下分别创建开发环境(application-dev.properties)、测试环境(application-test.properties)、生产环境(application-prod.properties)配置文件,然后修改不同环境对应的配置信息。
  2. 多环境的切换:在主配置文件(application.properties)中通过spring.profiles.active配置项来激活相应的运行环境。
注意:如果没有指定任何 profile 的配置文件,Spring Boot 会默认启动 `application-default.properties`(默认环境)。

3.5.1 多环境的配置

(1)创建多环境配置文件

创建多环境配置文件时,需要遵循 Spring Boot 允许的命名约定来命名,格式为 application-{profile}.properties,其中{profile}为对应的环境标识。在项目 resources 目录下分别创建application-dev.properties、application-test.properties 和 application-prod.properties 三个配置文件,对应开发环境、测试环境和生产环境。

Spring Boot 各系统环境配置文件,如图所示。

SpringBoot各系统环境配置文件.png

如图所示,根据应用系统中常见的三个运行环境拆分成了多个不同的配置文件,分别独立配置上面各运行环境的配置项。具体如下所示:

  • application.properties:项目主配置文件,包含项目所需的所有公共配置。
  • application-dev.properties:开发环境配置文件,包含项目所需的单独配置。
  • application-test.properties:测试环境配置文件,包含项目所需的单独配置。
  • application-prod.properties:生产环境配置文件,包含项目所需的单独配置。

创建多环境配置文件.png

(2)修改配置文件
通常情况下,开发环境、测试环境和生产环境使用的数据库是不一样的,所以接下来以不同环境配置不同数据库为例来演示多环境的配置。

示例:

项目主配置文件:application.properties

# 服务器端口配置
server.port=8081

# 系统运行环境
# spring.profiles.active=dev

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

# 服务器端口配置
#server.port=8091

# 指定数据库驱动
spring.datasource.driver-class-name=com.mysql.jdbc,Driver
# 数据库jdbc连接url地址
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/myapp_dev
# 数据库账号
spring.datasource.username=root
spring.datasource.password=root

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

# 服务器端口配置
#server.port=8092

# 指定数据库驱动
spring.datasource.driver-class-name=com.mysql.jdbc,Driver
# 数据库jdbc连接url地址
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/myapp_test
# 数据库账号
spring.datasource.username=root
spring.datasource.password=root

生产环境配置文件:application-prod.properties

# 服务器端口配置
#server.port=8093

# 指定数据库驱动
spring.datasource.driver-class-name=com.mysql.jdbc,Driver
# 数据库jdbc连接url地址
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/myapp_prod
# 数据库账号
spring.datasource.username=root
spring.datasource.password=root

默认环境配置文件:application-default.properties

# 服务器端口配置
server.port=8090

3.5.2 多环境的切换

配置了多环境之后,在实际测试、运行过程中,如何切换系统运行环境呢?

非常简单,通过修改 application.properties 配置文件中的 spring.profiles.active 配置项来激活相应的运行环境。

注意:如果没有指定任何 profile 的配置文件,Spring Boot 会默认启动 application-default.properties(默认环境)。

指定项目的启动环境有以下3种方式:

(1)方式一:配置文件指定项目启动环境

Spring Boot 支持通过 spring.profiles.active 配置项目启动环境,在 application.properties 配置文件中增加如下配置项指定对应的环境:

spring.profiles.active=dev

在上面的示例中,通过在 application.properties 配置文件中设置 spring.profiles.active 的配置项来配置系统的运行环境。这里配置的是 dev 开发环境。

(2)方式二:IDEA 编译器指定项目启动环境

一般在 IDEA 启动时,直接在 IDEA 的 Run/debug Configurations 页面配置项目启动环境,如图所示:

IDEA编译器指定项目启动环境.png

如图所示,项目调试运行时,IDEA 编译器可以通过 VM optionsProgram argumentsActive profiles 三个参数设置启动方式。

备注:上面三个参数任选其一即可。

拓展:

上面三个参数设置启动方式 对应的 java启动命令,如下图所示:

IDEA编译器指定项目启动环境(解析成的命令).png

(3)方式三:命令行启动指定项目启动环境

在命令行通过 java -jar 命令启动项目时,需要如下指定启动环境:

java -jar xxx.jar --spring.profiles.active=dev

如上所示,程序打包之后,可以在命令行使用 java -jar 的方式启动,并设置启动参数spring.profiles.active=dev,以开发环境为默认配置。

启动项目时,在系统启动日志中可以看到加载的是哪个环境的配置文件,如图所示。

在SpringBoot项目启动日志中可以看到加载的是哪个环境的配置文件.png

在上面的启动日志中可以看到系统目前启动的是dev开发环境。如果实现相关的数据库测试方法,可以验证相应的数据库操作是否生效。

来源:《Spring Boot 从入门到实战》学习笔记

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

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

相关文章

python的所有知识点(含讲解),不看就亏死了

目录 简介 特点 搭建开发环境 版本 hello world 注释 文件类型 变量 常量 数据类型 运算符和表达式 控制语句 数组相关 函数相关 字符串相关 文件处理 对象和类,注:不是那个对象!!!!&…

2023年安徽省职业院校技能大赛“网络空间安全” 比赛任务书

2023年安徽省职业院校技能大赛“网络空间安全” 比赛任务书 一、竞赛时间 总计:360分钟 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A模块 A-1 登录安全加固 180分钟 200分 A-2 Nginx安全策略 A-3 日志监控 A-4 中间件服务加固 A-5 本地安全策略 A-6 防火墙策…

基本程序设计技术

一.统计(计数)问题:方法:计数变量c的初值为0,每输入一个数据,进行必要判断后,若输入的数据满足统计条件,则计数变量c自加1,这样当对所有输入进行判断后,计数变…

多线程案例(一)【单例模式+阻塞队列】

一、单例模式 单例模式属于最容易被问到的一种设计模式。 啥是设计模式? 类似于棋谱,按摩模式写代码,可以更加规范。 单例模式的含义: 单例:单个实例对象 某个类有且只有一个对象。 这一点在很多场景上都需要. 比如…

如何轻松录制 CS 游戏玩法?4 种免费录制 CS 游戏视频的方法

CS:GO,又名反恐精英:全球攻势,是一款多人第一人称射击游戏,由 Valve 和 Hidden Path Entertainment 于 2012 年设计推出。作为反恐精英系列的第四代,它广受欢迎与全球游戏玩家。随着近年来电子竞技的兴起,用…

冒泡排序(朴素+优化)

思想 先来看一张动图 上面这张图就是冒泡排序的代码可视化 很显然我们可以发现,冒泡排序的基本思想就是从前往后比对,一直将找到的最大值交换到序列的末尾感觉冒泡排序这个名字还是很形象的 朴素做法 不难看出,将最大值交换到末尾的操作一…

数据结构与算法之打家劫舍(二)动态规划思想

前言:上一个题目所求的数组是线性的,首尾并不影响结果。这道题目的数组的首尾相连接,构成一个环。再来求这一道题目,难度进一步上身。我们直接进入题目:一.题目二.在上一道题目的基础上进行剖析对于一个数组&#xff0…

​科伦博泰冲刺港交所上市:持续大额亏损,科伦药业为其控股股东​

近日,四川科伦博泰生物医药股份有限公司(下称“科伦博泰”)在港交所递交招股书,准备在港交所主板上市,高盛和中信证券为其联合保荐机构。据贝多财经了解,科伦博泰为A股上市公司科伦药业(SZ:0024…

6.Kafka发布和显示系统通知

1.阻塞队列生产者线程线程需要实现 Runnable 接口重写接口的run方法声明变量private BlockingQueue<Integer> queue接受传入的阻塞队列创建有参构造器实现示例逻辑&#xff0c;生产100个数据&#xff0c;put进阻塞队列&#xff0c;每生产一个数据停顿20毫秒&#xff0c;输…

Ubuntu22.04 安装 mysql8,redis7,MongoDB6

服务器的准备 我的服务器是在腾讯云租的&#xff0c;所以服务器的apt源都是默认配好的&#xff0c;没配好的自行网上查找apt源配置。本文同样适用于Ubuntu 22&#xff0c;20。Ubuntu18亦可参考。云服务器一般防火墙未开放端口访问&#xff0c;请自行配置&#xff0c;否则后续远…

【unity游戏制作-mango的冒险】-4.场景二的镜头和法球特效跟随

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 收录于专栏&#xff1a;unity游戏制作 ⭐mango的冒险场景二——镜头和法球特效跟随⭐ 文章目录⭐mango的冒险场景二——镜…

【2023蓝桥杯】枚举专项题笔记

【枚举】卡片小蓝有很多数字卡片&#xff0c;每张卡片上都是数字 0 到 9。小蓝准备用这些卡片来拼一些数&#xff0c;他想从 1开始拼出正整数&#xff0c;每拼一个&#xff0c;就保存起来&#xff0c;卡片就不能用来拼其它数了。小蓝想知道自己能从 1拼到多少。例如&#xff0c…

JVM垃圾回收器概述

Serial串行回收 Serial收集器是最基本、历史最悠久的垃圾收集器了。JDK1.3之前回收新生代唯一的选择。 Serial收集器作为HotSpot中client模式下的默认新生代垃圾收集器。 Serial收集器采用复制算法、串行回收和"stop-the-World"机制的方式执行内存回收。 除了年轻…

【Redis】概述环境搭建(一)

&#x1f697;Redis学习起始站~ &#x1f6a9;本文已收录至专栏&#xff1a;数据库学习之旅 &#x1f44d;希望您能有所收获 一.初识Redis (1) 概述 Redis诞生于2009年全称是Remote Dictionary Server 远程词典服务器&#xff0c;是一个基于内存的键值型NoSQL数据库。这里有两…

数字IC笔试题---千题解,量大管饱,图文并茂

前言&#xff1a;出笔试题汇总&#xff0c;是为了总结秋招可能遇到的问题&#xff0c;做题不是目的&#xff0c;在做题的过程中发现自己的漏洞&#xff0c;巩固基础才是目的。所有题目结果和解释由笔者给出&#xff0c;答案主观性较强&#xff0c;若有错误欢迎评论区指出&#…

es8集群模式部署

准备3台机器 192.168.1.41 192.168.1.42 192.168.1.43因为es集群有几个节点&#xff0c;所以我对应node1&#xff0c;node2&#xff0c;node3.这几个名称并不是主机名&#xff0c;而是es节点名称 2. 开始部署&#xff0c;基础配置 (三台都做) systemctl stop firewalld syste…

【数据库】SQL语句

第三章 SQL SQL(structured Query Language) SQL概述 SQL特点 综合统一。高度非过程化。面向集合的操作方式。以同一种语法结构提供多种使用方式。语言简洁易学易用。 主要版本 SQL-89SQL-92 ,SQL2SQL-99 ,SQL3 数据库结构 SQL语言是集DDL、DML和DCL于一体的数据库语言…

网安入门,这篇文章足够了(内含海量资料)

随着新一轮科技和产业变革加速演进&#xff0c;人工智能、物联网、大数据、5G等新兴技术在成为经济社会发展的助推器的同时&#xff0c;也让网络空间变得更加复杂。全球范围内网络安全事件日益增加&#xff0c;网络安全的重要性日渐凸显。 “我国网络空间安全人才年培养规模在…

STM32——窗口看门狗

什么是窗口看门狗&#xff1f; 窗口看门狗用于监测单片机程序运行时效是否精准&#xff0c;主要检测软件异常&#xff0c;一般用于需要精准检测 程序运行时间的场合。 窗口看门狗的本质是一个能产生系统复位信号和提前唤醒中断的6位计数器。 产生复位条件&#xff1a; 当递减…

CLion开发图书管理系统项目 (c++ + MySQL实现)

项目仓库 &#xff1a;传送门 需求分析 当下市场日益激烈的竞争迫使图书企业采用一种新的管理方式来加快图书管理操作&#xff0c;而计算机技术的发展为图书管理注入了新的生机。通过调查市场&#xff0c;一款合格的图书管理系统必须具备以下三个特点&#xff1a; 能够对图书…