【Spring Boot】Spring Boot的系统配置 — 实战:实现系统多环境配置

实战:实现系统多环境配置

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

1.多环境的配置

通常应用系统可能在开发环境(dev)、测试环境(test)、生产环境(prod)中运行,那么如何做到多个运行环境配置灵活、快速切换呢?Spring Boot提供了极简的解决方案,只需要简单的配置,应用系统就能灵活切换运行环境配置。

1.1创建多环境配置文件

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

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

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

1.2修改配置文件

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

首先,修改application.properties,配置系统的启动端口:

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

在上面的示例中,application.properties包含项目所需的所有公共配置,这里配置系统的启动端口,所有环境的启动端口都是8088。

然后,修改application-dev.properties开发环境的配置,增加数据库的连接配置,代码示例如下:

# 指定数据库驱动
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

配置数据库连接的相关属性,我们看到开发环境配置的数据库是myapp_dev。

其他环境的配置文件修改对应的配置连接即可,以上项目的多环境配置就完成了。接下来演示切换项目运行环境。

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 Configuration页面配置项目启动环境。

在这里插入图片描述

项目调试运行时,IDEA编译器可以通过VM options、Program arguments、Active profiles三个参数设置启动方式。

(3)命令行启动指定项目环境

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

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

如上所示,程序打包之后,可以在命令行使用java -jar的方式启动,并设置启动参数spring.profiles.active=dev,以开发环境为默认配置。在application-{profile}.properties中配置完成后,启动项目时,在系统启动日志中可以看到加载的是哪个环境的配置文件,如图所示。

在这里插入图片描述

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

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

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

相关文章

北邮国院物联网 Microprocessor 微处理器笔记

Introduction-随便聊 嵌入式系统是什么?专用的计算机系统。为专门功能可能对计算机架构,外设等做出一些取舍。 通常的限制:Cost(比如大量部署传感器节点),Size and weight limits(特定应用场景…

第 3 章 Spark 通讯架构

3.1 Spark 通信架构概述 3.1 Spark 通信架构概述 Spark 中通信框架的发展: ➢ Spark 早期版本中采用 Akka 作为内部通信部件。 ➢ Spark1.3 中引入 Netty 通信框架,为了解决 Shuffle 的大数据传输问题使用 ➢ Spark1.6 中 Akka 和 Netty 可以配置使用。…

使用HummerRisk进行K8s安全合规检测

1.简介 HummerRisk 是开源的云原生安全平台,以非侵入的方式解决云原生的安全和治理问题。核心能力包括混合云的安全治理和云原生安全检测。 今天我们来通过 HummerRisk 云原生安全检测能力来对Kubernetes进行安全合规检测 2.检测步骤 ①首先创建一个Kubernetes账…

浅谈无线温度监控系统在低功耗开关柜中的应用

安科瑞 华楠 摘要:为了能够实现实时监测高压开关柜的温度状况,提出一种基于无线传感器网络的开关柜温度在线监测系统。设计的无线温度在线监测系统不仅解决了开关柜内高温、高压、强电磁感应等在恶劣环境下不易检测的问题,而且从硬件选择和软…

【Linux】生产者消费者模型 -- RingQueue

文章目录 1. 生产者消费者模型的理解1.1 生产者消费者模型的概念1.2 生产者消费者模型的特点1.3 生产者消费者模型的优点 2. 基于BlockQueue的生产者消费者模型 1. 生产者消费者模型的理解 1.1 生产者消费者模型的概念 生产者消费者模型就是通过一个容器来解决生产者和消费者的…

机器学习31:《推荐系统-IV》深度神经网络DNN

在《机器学习29:《推荐系统-II》协同过滤》一文中,笔者介绍了如何使用矩阵分解来学习嵌入。矩阵分解具有一些局限性: 基础矩阵分解只用了 UserID(QueryID) 和 ItemID 两个维度的信息,所有学到的知识都蕴含在…

包管理工具:npm、yarn、cnpm、npx、pnpm

yarn:  yarn是由Facebook(react)、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具;  yarn 是为了弥补早期npm 的一些缺陷而出现的;  早期的npm存在很多的缺陷,比如安装依赖速度很慢、版本依赖混乱等等一系列…

pytorch深度学习 之一 神经网络梯度下降和线性回归

张量和随机运行,exp函数 import torch a torch.tensor([[1,2],[3,4]]) print(a) a torch.randn(size(10,3)) print(a) b a-a[0] print(torch.exp(b)[0].numpy())输出: tensor([[1, 2],[3, 4]]) tensor([[-1.0165, 0.3531, -0.0852],[-0.1065, -0.5…

Go语言之流指针类型,new函数

计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如 int 占用 4 个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号、身份证号一样,每个字节的编号是唯一的,根…

MySQL-数据库读写分离(上)

♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏&#xf…

JavaWeb 速通Servlet(上)

目录 一、Servlet快速入门 1.为什么需要Servlet? 2.什么是Servlet? 3.Servlet开发说明 : 4.入门案例 : 二、 Servlet生命周期 1.浏览器请求Servlet的流程分析(重要) : 2.生命周期 : 1 初始化阶段 2 处理请求阶段 3 终止阶段 三、Serv…

关于Tab制表符,点击一次跳很多字符的问题解决

首先在出现问题的地方右键鼠标,出现后点击段落。 进入后点击左下角的制表位 进入后点击全部清除,然后确认,问题就解决了(哪里有问题就处理哪里)