SpringBoot——多环境开发的使用

本文涉及的产品
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
云原生内存数据库 Tair,内存型 2GB
简介: SpringBoot——多环境开发的使用

一、前言

各位小伙伴们,前面已经讲解了SpringBoot——学会使用Test,检测自己写的代码,现在来介绍如何使用springboot在多环境下进行代码的开发~


二、简介

多环境开发,其实就是说我们的电脑上写的程序最终要放到别人的服务器上去运行。每个计算机环境不一样,这就是多环境。常见的多环境开发主要兼顾3种环境设置:


开发环境——自己用的

测试环境——自己公司用的

生产环境——甲方用的

因为这是绝对不同的三台电脑,所以环境肯定有所不同,比如连接的数据库不一样,设置的访问端口不一样等等。

image.png


三、yaml单一文件版

现在介绍如何使用多环境的开发。


比如我们自己开发时,配置自己的端口如下:


server:
  port: 80


但是我想设计两组环境,分别用不同的端口号,我该怎么做呢?做法很简单,中间使用三个减号隔开


server:
  port: 80
---
server:
  port: 81


如何区分两种环境呢?起名字呗~


spring:
  config:
    activate:
      on-profile: dev
server:
  port: 80
---
spring:
  config:
    activate:
      on-profile: pro
server:
  port: 81


那用哪一个呢?设置默认启动哪个就可以了


spring:
  profiles:
    active: dev #默认环境是dev环境


多环境开发的使用就是这么简单,我们再多来一组环境也OK的


spring:
  profiles:
    active: dev #默认环境是dev环境
---
spring:
  config:
    activate:
      on-profile: dev
server:
  port: 80
---
spring:
  config:
    activate:
      on-profile: pro
server:
  port: 81
---
spring:
  config:
    activate:
      on-profile:  test
server:
  port: 82



总结


多环境开发需要设置若干种常用环境,例如开发、生产、测试环境

yaml格式中设置多环境使用---区分环境设置边界

每种环境的区别在于加载的配置属性不同

启用某种环境时需要指定启动时使用该环境


四、yaml多文件版

将所有的配置都放在一个配置文件中,尤其是每一个配置应用场景都不一样,这显然不合理,解决办法就是将一个配置文件拆分成多个配置文件,通过这种方式,每个配置文件中写自己的配置,主配置文件中写清楚用哪一个配置文件就好了。


就以单文件版的配置举例,我们此时的主配置文件是:


spring:
  profiles:
    active: dev


环境配置文件因为每一个都是配置自己的项,所以名字不用写里面了。问题是如何区分这是哪一组配置呢?办法是使用文件名区分。


application-pro.yaml


server:
  port: 80


application-dev.yaml


server:
  port: 81


application-test.yaml


server:
  port: 82


我只需要知道的是,文件的命名规则为:application-环境名.yml


相应的配置文件位置如下图所示:

image.png

在配置文件中,如果某些配置项所有环境都一样,可以将这些项写入到主配置文件中,只有那些有区别的项才写入到环境配置文件中


主配置文件中设置公共配置(全局)

环境分类配置文件中常用于设置冲突属性(局部)

总结


可以使用独立配置文件定义环境属性


独立配置文件便于线上系统维护更新并保障系统安全性


五、使用技巧

下面给大家说一下如何基于多环境开发做配置独立管理,务必掌握哦~


首先将所有的配置根据功能对配置文件中的信息进行拆分,并制作成独立的配置文件,命名规则如下,命名是一种规则


application-devDB.yml

application-devRedis.yml

application-devMVC.yml

然后使用include属性在激活指定环境的情况下,同时对多个环境进行加载使其生效,多个环境间使用逗号分隔


spring:
  profiles:
      active: dev
        include: devDB,devRedis,devMVC


需要特别注意的是:当主环境dev与其他环境有相同属性时,主环境属性生效;其他环境中有相同属性时,最后加载的环境属性生效


但是上面的设置也有一个问题,比如我要切换dev环境为pro时,include也要修改。因为include属性只能使用一次。让人可喜的是SpringBoot从2.4版开始使用group属性替代include属性,降低了配置书写量。简单说就是我先写好,以后用哪个就使用哪个。


spring:
  profiles:
      active: dev
        group:
          "dev": devDB,devRedis,devMVC
        "pro": proDB,proRedis,proMVC
        "test": testDB,testRedis,testMVC


六、总结

好了,文章到这里就结束了,我们需要重点了解使用springboot进行多环境的开发,使开发做到分层次。如果觉得博客写的还不错,可以三连支持哦~


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
IDE Java 开发工具
Spring Boot:加速Java后端开发的现代化利器
在当今快速迭代的软件开发环境中,Spring Boot 已成为Java后端开发领域的首选框架。作为Spring家族的一员,它以“约定优于配置”的设计理念,极大地简化了传统Spring应用的配置和部署过程,让开发者能够更加专注于业务逻辑的实现。本文将探讨Spring Boot的核心优势,并通过一个简单的示例展示如何快速启动一个基于Spring Boot的Java Web应用。
93 1
|
2天前
|
机器学习/深度学习 数据采集 JavaScript
ADR智能监测系统源码,系统采用Java开发,基于SpringBoot框架,前端使用Vue,可自动预警药品不良反应
ADR药品不良反应监测系统是一款智能化工具,用于监测和分析药品不良反应。该系统通过收集和分析病历、处方及实验室数据,快速识别潜在不良反应,提升用药安全性。系统采用Java开发,基于SpringBoot框架,前端使用Vue,具备数据采集、清洗、分析等功能模块,并能生成监测报告辅助医务人员决策。通过集成多种数据源并运用机器学习算法,系统可自动预警药品不良反应,有效减少药害事故,保障公众健康。
ADR智能监测系统源码,系统采用Java开发,基于SpringBoot框架,前端使用Vue,可自动预警药品不良反应
消息中间件 缓存 监控
29 0
|
15天前
|
缓存 Java 应用服务中间件
随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架
【9月更文挑战第6天】随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架。Nginx作为高性能的HTTP反向代理服务器,常用于前端负载均衡,提升应用的可用性和响应速度。本文详细介绍如何通过合理配置实现Spring Boot与Nginx的高效协同工作,包括负载均衡策略、静态资源缓存、数据压缩传输及Spring Boot内部优化(如线程池配置、缓存策略等)。通过这些方法,开发者可以显著提升系统的整体性能,打造高性能、高可用的Web应用。
44 2
|
17天前
|
NoSQL 前端开发 Java
使用 Spring Boot + Neo4j 实现知识图谱功能开发
在数据驱动的时代,知识图谱作为一种强大的信息组织方式,正逐渐在各个领域展现出其独特的价值。本文将围绕使用Spring Boot结合Neo4j图数据库来实现知识图谱功能开发的技术细节进行分享,帮助读者理解并掌握这一技术栈在实际项目中的应用。
80 4
|
19天前
|
IDE Java 开发工具
还在为繁琐的配置头疼吗?一文教你如何用 Spring Boot 快速启动,让开发效率飙升,从此告别加班——打造你的首个轻量级应用!
【9月更文挑战第2天】Spring Boot 是一款基于 Spring 框架的简化开发工具包,采用“约定优于配置”的原则,帮助开发者快速创建独立的生产级应用程序。本文将指导您完成首个 Spring Boot 项目的搭建过程,包括环境配置、项目初始化、添加依赖、编写控制器及运行应用。首先需确保 JDK 版本不低于 8,并安装支持 Spring Boot 的现代 IDE,如 IntelliJ IDEA 或 Eclipse。
59 5
|
20天前
|
数据库 开发者 Java
颠覆传统开发:Hibernate与Spring Boot的集成,让你的开发效率飞跃式提升!
【8月更文挑战第31天】在 Java 开发中,Spring Boot 和 Hibernate 已成为许多开发者的首选技术栈。Spring Boot 简化了配置和部署过程,而 Hibernate 则是一个强大的 ORM 框架,用于管理数据库交互。将两者结合使用,可以极大提升开发效率并构建高性能的现代 Java 应用。本文将通过代码示例展示如何在 Spring Boot 项目中集成 Hibernate,并实现基本的数据库操作,包括添加依赖、配置数据源、创建实体类和仓库接口,以及在服务层和控制器中处理 HTTP 请求。这种组合不仅简化了配置,还提供了一套强大的工具来快速开发现代 Java 应用程序。
31 0
|
23天前
|
前端开发 Java 开发者
Spring Boot DevTools 热部署神器,助你在开发浪潮中乘风破浪,一骑绝尘!
【8月更文挑战第29天】在快速迭代的软件开发领域,高效开发至关重要。Spring Boot DevTools 作为一款优秀的热部署工具,可自动重新加载代码修改,无需手动重启应用,大幅节省时间,即时预览修改效果,简化开发流程。通过简单示例,展示了其自动刷新静态资源和模板文件的功能,有效提升了开发效率,使开发者更专注于功能实现。它就像是开发者的得力助手,显著减少等待时间,带来更高效、流畅的开发体验。
29 0
|
2月前
|
存储 SQL 测试技术
基于SpringBoot+Vue交通管理在线服务系统的开发(源码+部署说明+演示视频+源码介绍+lw)(2)
基于SpringBoot+Vue交通管理在线服务系统的开发(源码+部署说明+演示视频+源码介绍+lw)
103 2
|
2月前
|
JavaScript Java 关系型数据库
基于SpringBoot+Vue交通管理在线服务系统的开发(源码+部署说明+演示视频+源码介绍+lw)(1)
基于SpringBoot+Vue交通管理在线服务系统的开发(源码+部署说明+演示视频+源码介绍+lw)
98 1