【SpringBoot】多环境开发、分组管理、开发控制

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 【SpringBoot】多环境开发、分组管理、开发控制




一、多环境开发 —— yaml格式



单配置文件、多环境(共享配置文件)

  • 配置文件中,使用---分隔不同的环境,从而实现多环境
  • 划分出一块环境,作为设置公共配置的应用环境,在当中指定应用哪个环境中的属性配置。
# 这里是公共配置
# 设置应用哪个环境(这里应用dev环境)
spring:
  profiles:
    active: dev
---
# 假设这是生产环境
# 过时格式设置环境
spring:
  profiles: pro
# 具体参数设置
server:
  port: 80
---
# 假设这是开发环境
# 标准格式设置环境
spring:
  config:
    activate:
      on-profile: dev
# 具体参数设置
server:
  port: 81
---
# 假设这是测试环境
# 推荐使用此格式(标准格式)
spring:
  config:
    activate:
      on-profile: test
# 具体参数设置
server:
  port: 82


小结

  1. 多环境开发需要设置若干种常用的环境,例如开发环境、生产环境、测试环境
  2. yaml格式中设置多环境,使用---区分环境,设置边界
  3. 每种环境的区别在于加载的配置属性不同
  4. 启动某种环境时,需要指定启动时使用的环境




多配置文件、多环境(独立配置文件)

  • 主配置文件中设置公共配置 —— 全局
  • 环境分类配置文件中常用于配置冲突属性 —— 局部


  1. 主启动配置文件application.yml
# 设置应用哪个环境(这里应用dev环境)
spring:
  profiles:
    active: dev
  • 使用include属性在激活指定环境的情况下,可以同时对多个环境进行加载使其生效,多个环境间使用逗号分隔:
spring:
  profiles:
    active: dev
    include: test,pro
# 这样书写,文件的加载顺序是:test 》 pro 》 dev
# 当主环境dev与其他环境有相同属性时,主环境属性失效;其他环境中有相同的属性时,最后加载的环境属性生效


  1. 环境分类配置文件application-pro.yml:
server:
  port: 80


  1. 环境分类配置文件application-dev.yml:
server:
  port: 81


  1. 环境分类配置文件application-test.yml:
server:
  port: 82


小结

  • 可以使用独立配置文件定义环境属性
  • 独立配置文件便于线上维护更新保障系统安全性




二、多环境开发 —— properties格式

  • properties文件多环境配置仅支持多文件格式
  • 主配置文件中设置公共配置 —— 全局
  • 环境分类配置文件中常用于配置冲突属性 —— 局部


  1. 主启动配置文件application.properties
# 设置应用哪个环境(这里应用test环境)
spring.profiles.active=test


  1. 环境分类配置文件application-pro.properties:
server.port=80


  1. 环境分类配置文件application-dev.properties:
server.port=81


  1. 环境分类配置文件application-test.properties:
server.port=82




三、多环境分组管理

  • 使用include属性在激活指定环境的情况下,可以同时对多个环境进行加载使其生效,多个环境间使用逗号分隔
  • 当主环境dev与其他环境有相同属性时,主环境属性失效;其他环境中有相同的属性时,最后加载的环境属性生效


👇👇👇

  1. 从SpringBoot2.4版本开始使用group属性代替include属性,降低了配置书写量
  2. 使用group属性定义多种主环境与子环境的包含关系
  • (分组示例)根据功能对配置文件中的信息进行拆分,并制作成独立的配置文件,命名规则如下:
  • application-devDB.yml
  • application-devRedis.yml
  • application-devMVC.yml
spring:
  profiles:
    active: dev
    group:
      "dev": devDB,devRedis,devMVC
      "pro": proDB,proRedis,proMVC
      "test": testDB,testRedis,testMVC
# 这里启动dev组,配置文件扫描顺序是:dev 》 devDB 》 devRedis 》 devMVC      
# 当主环境dev与其他环境有相同属性时,主环境属性失效;其他环境中有相同的属性时,最后加载的环境属性生效


多环境开发使用group属性设置配置文件分组,便于线上维护管理




四、多环境开发控制

Maven 与 SpringBoot 多环境兼容

  1. Maven中设置多环境属性
<profiles>
        <!--application-dev.yml配置文件配置的环境-->
        <profile>
            <id>dev_env</id>
            <properties>
                <profile.active>dev</profile.active>
            </properties>
            <!--使用activation标签,配置activeByDefault的默认启动配置-->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <!--application-pro.yml配置文件配置的环境-->
        <profile>
            <id>pro_env</id>
            <properties>
                <profile.active>pro</profile.active>
            </properties>
        </profile>
        <!--application-test.yml配置文件配置的环境-->
        <profile>
            <id>test_env</id>
            <properties>
                <profile.active>test</profile.active>
            </properties>
        </profile>
    </profiles>


  1. SpringBoot中引用Maven属性
  • 使用@@符号将Maven属性括起来表示引用
spring:
  profiles:
    active: @profile.active@            # 因为Maven中为dev配置了activeByDefault的默认启动配置,这里代表dev组
    group:
      "dev": devDB,devRedis,devMVC
      "pro": proDB,proRedis,proMVC
      "test": testDB,testRedis,testMVC


  1. 执行Maven打包指令,生成boot工程打包的.jar文件
mvn clean
mvn package


小结

  • 当Maven和SpringBoot同时对多环境进行控制时,以Maven为主,SpringBoot使用@...@占位符获取Maven对应配置属性值
  • 基于SpringBoot读取Maven配置属性的前提下,如果IDEA下测试工程时pom.xml每次更新需要手动compile方可生效




相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
1月前
|
XML Java 数据格式
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
49 0
|
2月前
|
前端开发 Java
表白墙/留言墙 —— 初级SpringBoot项目,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
文章通过一个表白墙/留言墙的初级SpringBoot项目实例,详细讲解了如何进行前后端开发,包括定义前后端交互接口、创建SpringBoot项目、编写前端页面、后端代码逻辑及实体类封装的全过程。
93 3
表白墙/留言墙 —— 初级SpringBoot项目,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
2月前
|
前端开发 Java 数据安全/隐私保护
用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
文章通过一个简单的SpringBoot项目,详细介绍了前后端如何实现用户登录功能,包括前端登录页面的创建、后端登录逻辑的处理、使用session验证用户身份以及获取已登录用户信息的方法。
322 2
用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
|
3月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的服装商城管理系统
基于Java+Springboot+Vue开发的服装商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的服装商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
178 2
基于Java+Springboot+Vue开发的服装商城管理系统
|
4天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
39 13
|
12天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
23天前
|
XML Java 数据格式
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
36 2
|
3月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的蛋糕商城管理系统
基于Java+Springboot+Vue开发的蛋糕商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的蛋糕商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
179 3
基于Java+Springboot+Vue开发的蛋糕商城管理系统
|
3月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的医院门诊预约挂号系统
基于Java+Springboot+Vue开发的医院门诊预约挂号系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的门诊预约挂号管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
166 2
基于Java+Springboot+Vue开发的医院门诊预约挂号系统
|
3月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的母婴商城管理系统
基于Java+Springboot+Vue开发的母婴商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的网上母婴商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
69 7
基于Java+Springboot+Vue开发的母婴商城管理系统