springboot3环境隔离

Profiles

环境隔离能力;快速切换开发、测试、生产环境

步骤:

  1. 标识环境:指定哪些组件、配置在哪个环境生效{dev 开发环境 test 测试环境 prod 生产环境 defult 默认环境 }
  2. 切换环境:这个环境对应的所有组件和配置就应该生效 只有激活对应的环境,这些组件才会生效

1. 使用

1.1 指定环境

  • Spring Profiles 提供一种隔离配置 的方式,使其仅在特定环境生效;
  • 任何@Component, @Configuration 或 @ConfigurationProperties 可以使用 @Profile 标记,来指定何时被加载。【容器中的组件 都可以被 @Profile标记】

1.2 环境激活

  1. 配置激活指定环境; 配置文件
ini 复制代码
spring.profiles.active=production,hsqldb
  1. 也可以使用命令行激活。--spring.profiles.active=dev,hsqldb
  2. 还可以配置默认环境; 不标注@Profile 的组件永远都存在。
    1. 以前默认环境叫default
    2. spring.profiles.default=test 不推荐通过修改默认环境的方式来切换环境
  3. 推荐使用激活方式激活指定环境
  4. 也可以使用命令行激活。--spring.profiles.active=dev,hsqldb
  5. 还可以配置默认环境; 不标注@Profile 的组件永远都存在。
    1. 以前默认环境叫default
    2. spring.profiles.default=test

4.推荐使用激活方式激活指定环境

1.3 环境包含

注意:

  1. spring.profiles.active 和spring.profiles.default 只能用到 无 profile 的文件 中,如果在application-dev.yaml中编写就是无效的
  2. 也可以额外添加生效文件,而不是激活替换。比如:
ini 复制代码
spring.profiles.include[0]=common  #包含指定的环境,不管激活哪个环境
spring.profiles.include[1]=local

最佳实战:

  • 生效的环境 = 激活的环境/默认环境 + 包含的环境【总是要生效的环境】
  • 项目里面这么用
    • 基础的配置mybatislogxxx:写到包含环境中
    • 需要动态切换变化的 dbredis:写到激活的环境中

2.2 Profile 分组

创建prod组,指定包含db和mq配置

csharp 复制代码
spring.profiles.group.prod[0]=db
spring.profiles.group.prod[1]=mq #直接按组激活相应的环境 ,组内可以写环境配置也可以写其他的环境配置组

使用--spring.profiles.active=prod ,就会激活prod,db,mq配置文件

2.3. Profile 配置文件

  • application-{profile}.properties可以作为指定环境的配置文件
  • 激活这个环境,配置 就会生效。最终生效的所有配置
    • application.properties:主配置文件,任意时候都生效
    • application-{profile}.properties:指定环境配置文件,激活指定环境生效

profile优先级 > application

项目的所有生效配置项 = 激活环境配置中的所有项 + 主配置文件中的与环境配置文件不冲突的项

相关推荐
qq_12498707531 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
Coder_Boy_2 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
2301_818732062 小时前
前端调用控制层接口,进不去,报错415,类型不匹配
java·spring boot·spring·tomcat·intellij-idea
汤姆yu5 小时前
基于springboot的尿毒症健康管理系统
java·spring boot·后端
暮色妖娆丶5 小时前
Spring 源码分析 单例 Bean 的创建过程
spring boot·后端·spring
biyezuopinvip6 小时前
基于Spring Boot的企业网盘的设计与实现(任务书)
java·spring boot·后端·vue·ssm·任务书·企业网盘的设计与实现
JavaGuide7 小时前
一款悄然崛起的国产规则引擎,让业务编排效率提升 10 倍!
java·spring boot
figo10tf7 小时前
Spring Boot项目集成Redisson 原始依赖与 Spring Boot Starter 的流程
java·spring boot·后端
zhangyi_viva7 小时前
Spring Boot(七):Swagger 接口文档
java·spring boot·后端
橙露8 小时前
Spring Boot 核心原理:自动配置机制与自定义 Starter 开发
java·数据库·spring boot