【第14章】SpringBoot实战篇之多环境配置

文章目录

  • 前言
  • 一、通用配置文件
    • [1. 定义](#1. 定义)
    • [2. 使用](#2. 使用)
      • [2.1 application.yml](#2.1 application.yml)
      • [2.2 启动类](#2.2 启动类)
    • [3. 测试](#3. 测试)
  • 二、多环境配置文件
    • 1.定义
      • [1.1 application-local.yml](#1.1 application-local.yml)
      • [1.2 application-dev.yml](#1.2 application-dev.yml)
      • [1.3 application-test.yml](#1.3 application-test.yml)
      • [1.4 application-prod.yml](#1.4 application-prod.yml)
    • 2.使用
      • [2.1 application.yml](#2.1 application.yml)
      • [2.2 启动类](#2.2 启动类)
    • 3.测试
  • 三、多环境配置文件分组
    • [1. 定义](#1. 定义)
      • [1.1 application-local-db.yml](#1.1 application-local-db.yml)
      • [1.2 application-local-redis.yml](#1.2 application-local-redis.yml)
      • [1.3 application-local-mq.yml](#1.3 application-local-mq.yml)
    • [2. 使用](#2. 使用)
      • [2.1 application.yml](#2.1 application.yml)
      • [2.2 启动类](#2.2 启动类)
    • [3. 测试](#3. 测试)
  • 总结

前言

在一个项目中,需要配置的参数往往是繁重的,而其中系统配置和应用配置占据较大的比重,我们需要对其进行拆分。


一、通用配置文件

application.yml文件通常存放系统框架配置如spring、mybatis等;application-common.yml则用来存放应用通用配置参数。

1. 定义

bash 复制代码
#application-common.yml 通用配置
common:
    message: 小猪佩奇

2. 使用

2.1 application.yml

bash 复制代码
spring:
  profiles:
    include: common

2.2 启动类

java 复制代码
public static void main(String[] args) {
    ConfigurableApplicationContext run = SpringApplication.run(SpringBoot3Application.class, args);
    ConfigurableEnvironment environment = run.getEnvironment();
    String appName = environment.getProperty("spring.application.name");
    log.info("{}启动完成",appName);
    String message = environment.getProperty("common.message");
    log.info("提示语{}",message);
}

3. 测试

二、多环境配置文件

多环境配置文件主要用于存放应用程序中不同环境中存在差异的配置信息,如ip、密钥等;可以划分为本地(local)、开发(dev)、测试(test)、生产(prod)

1.定义

1.1 application-local.yml

bash 复制代码
#本地配置
application:
  profile:
    name: local

1.2 application-dev.yml

bash 复制代码
#开发配置
application:
  profile:
    name: dev

1.3 application-test.yml

bash 复制代码
#测试配置
application:
  profile:
    name: test

1.4 application-prod.yml

bash 复制代码
#生产配置
application:
  profile:
    name: local

2.使用

2.1 application.yml

bash 复制代码
spring:
  profiles:
    include: common
    active: local

2.2 启动类

java 复制代码
public static void main(String[] args) {
  ConfigurableApplicationContext run = SpringApplication.run(SpringBoot3Application.class, args);
   ConfigurableEnvironment environment = run.getEnvironment();
   String appName = environment.getProperty("spring.application.name");
   log.info("{}启动完成",appName);
   String message = environment.getProperty("common.message");
   log.info("提示语{}",message);
   String profile = environment.getProperty("application.profile.name");
   log.info("当前环境{}",profile);
}

3.测试

三、多环境配置文件分组

上面的其实基本够用了,因为太多的配置文件不利于维护,如果你的配置确实特别的多,想分类配置,那么可以接着往下看;

场景描述:配置太多,我想数据库一个文件、redis一个文件、mq一个文件

1. 定义

1.1 application-local-db.yml

bash 复制代码
#本地配置
db:
  config:
    ip: localhost

1.2 application-local-redis.yml

bash 复制代码
#本地配置
redis:
  config:
    ip: localhost

1.3 application-local-mq.yml

bash 复制代码
#本地配置
mq:
  config:
    ip: localhost

2. 使用

2.1 application.yml

bash 复制代码
spring:
  profiles:
    include: common
    active: local
    group:
      local: local-db,local-redis,local-mq

2.2 启动类

java 复制代码
 public static void main(String[] args) {
    ConfigurableApplicationContext run = SpringApplication.run(SpringBoot3Application.class, args);
    ConfigurableEnvironment environment = run.getEnvironment();
    String appName = environment.getProperty("spring.application.name");
    log.info("{}启动完成",appName);
    String message = environment.getProperty("common.message");
    log.info("提示语{}",message);
    String profile = environment.getProperty("application.profile.name");
    log.info("当前环境{}",profile);
    String db = environment.getProperty("db.config.ip");
    String redis = environment.getProperty("redis.config.ip");
    String mq = environment.getProperty("mq.config.ip");
    log.info("db[{}],redis[{}],mq[{}]",db,redis,mq);
}

3. 测试


总结

回到顶部

开发的时候多花些心思,上线的时候省点事。

相关推荐
Mandy的名字被占用了4 小时前
晨风AI+知识付费系统|学练考全闭环,重构教育变现新模式
人工智能·后端
caimouse4 小时前
Chrome V49 (49.0.2623.112) 在 ReactOS 上运行所需的系统依赖
chrome·reactos
why技术4 小时前
分享一套我一直在使用的 AICoding 组合拳,小而美的典范。
前端·后端·ai编程
GetcharZp5 小时前
SRS实战:一个开源流媒体服务,支持6大协议,80ms低延迟,轻松搭建自己的直播平台
后端
Csvn6 小时前
📊 SQL 入门 Day 7:子查询 — 查询中的查询
后端·sql
IT_陈寒8 小时前
为什么我的JavaScript异步代码总是不按顺序执行?
前端·人工智能·后端
星栈9 小时前
Node 框架怎么选?Express、Koa、Egg、NestJS 场景化选型指南
后端·node.js
锋行天下9 小时前
打造企业内部知识库系统RAG全栈项目
前端·后端·架构
音符犹如代码10 小时前
后端视角看 EventBus:发布订阅总线的原理、场景与用法
java·spring boot·guava
码事漫谈10 小时前
Kimi K3 真实体验:全网评价整理,优缺点一次性说清楚
后端