日常开发中一般都会有三个不同的环境,分别是开发环境(dev),测试环境(test)和生产环境(prod),不同的环境各种配置都不相同,比如数据库配置,服务器端口等等。

Spring Boot 多环境配置

Spring Boot 自己本身带的有多环境配置,对多环境整合已经有了很好的支持,能够在打包,运行期间自由切换环境。

创建不同环境的配置文件

不同环境的配置文件需要进行分开,按照项目运行环境启用加载。新建 application-dev.yml, application-test.yml, application-prod.yml。加上 application.yml 一共有四个配置文件。注意:配置文件名称一定要是 application-name.yml 格式,name可以自定义。

指定不同环境的配置文件

在各个环境的配置文件都建立好之后,需要在 application.yml 文件中指定启用哪个环境的配置文件:

# 指定启用环境为 开发环境 dev
spring:
profiles:
active: dev

如果没有指定运行的环境,Spring Boot 会默认加载 application.yml 配置文件。

运行 jar 包的时候指定配置文件

Spring Boot 内置的环境切换能够在运行 Jar 包的时候指定环境,命令如下:

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

以上命令指定了运行启用的环境为 开发环境 dev。

Maven 多环境配置

Maven 也提供了对多环境的支持,不仅仅支持 Spring Boot 项目,只要是基于 Maven 的项目都可以配置。Maven 对于多环境的支持在功能方面更加强大,支持 JDK 版本、资源文件、操作系统等等。

创建不同环境的配置文件

新建 application-dev.yml, application-test.yml, application-prod.yml。加上 application.yml 一共四个配置文件。

定义激活的变量

需要将 Maven 激活的环境作用于 Spring Boot,实际还是利用了 spring.profiles.active 这个属性,只是现在这个属性的取值将是取值于 Maven,配置如下:

spring.profiles.active=@profile.active@

profile.active 实际上就是一个变量,在 maven 打包的时候指定的 -P dev 传入的就是值。

pom 文件中定义 profiles

<!--定义三种开发环境-->
<profiles>
<profile>
<!--不同环境的唯一id-->
<id>dev</id>
<activation>
<!--默认激活开发环境-->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!--profile.active对应application.yml中的@profile.active@-->
<profile.active>dev</profile.active>
</properties>
</profile>
<!--测试环境-->
<profile>
<id>test</id>
<properties>
<profile.active>test</profile.active>
</properties>
</profile>
<!--生产环境-->
<profile>
<id>prod</id>
<properties>
<profile.active>prod</profile.active>
</properties>
</profile>
</profiles>

标签 <profile.active> 正是对应着配置文件 application.yml 中的 @profile.active@ 变量。

activeByDefault 标签指定了默认激活的环境,即是打包时不指定 -P 选项默认的选择环境。

Maven 中的激活条件还可以根据 JDK、操作系统、文件存在或者缺失来激活,这些内容都在 activation 中进行配置:

<!--activation用来指定激活方式,可以根据jdk环境,环境变量,文件的存在或缺失-->
<activation>
<!--配置默认激活-->
<activeByDefault>true</activeByDefault>
<!--通过jdk版本-->
<!--当jdk环境版本为1.8时,此profile被激活-->
<jdk>1.8</jdk>
<!--当jdk环境版本1.8或以上时,此profile被激活-->
<jdk>[1.8,)</jdk>
<!--根据当前操作系统-->
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
</activation>

资源过滤

项目默认运行时会将所有的配置文件都带上,但是可以通过配置来只保留对应环境下的配置文件,增加项目的安全性。

<build>
<resources>
<!--排除配置文件-->
<resource>
<directory>src/main/resources</directory>
<!--先排除所有的配置文件-->
<excludes>
<!--使用通配符,当然可以定义多个exclude标签进行排除-->
<exclude>application*.properties</exclude>
</excludes>
</resource>
<!--根据激活条件引入打包所需的配置和文件-->
<resource>
<directory>src/main/resources</directory>
<!--引入所需环境的配置文件-->
<filtering>true</filtering>
<includes>
<include>application.yml</include>
<!--根据maven选择环境导入配置文件-->
<include>application-${profile.active}.yml</include>
</includes>
</resource>
</resources>
</build>

SpringBoot 多环境切换的更多相关文章

  1. springboot 不同环境切换不同的配置文件

    开发的流程是本地>测试>预发布>正式,所以不同的环境,肯定是不同的配置文件,所以我们需要针对不同的环境做不同的配置切换. 下面我们来说说 springboot 是怎么来切换的: 1. ...

  2. 微服务-springboot多环境配置(开发生产测试环境切换)

    springboot根据spring.profiles.active会去寻找应该加载开发环境配置还是生产环境配置 application.properties #生产环境,开发环境,测试环境切换 pr ...

  3. SpringBoot 多环境配置文件切换

    背景 很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据,这时候,我们可以利用profile在不同 ...

  4. 配置SpringBoot方便的切换jar和war

    配置SpringBoot方便的切换jar和war 网上关于如何切换,其实说的很明确,本文主要通过profile进行快速切换已实现在不同场合下,用不同的打包方式. jar到war修改步骤 pom文件修改 ...

  5. spring boot--日志、开发和生产环境切换、自定义配置(环境变量)

    Spring Boot日志常用配置: # 日志输出的地址:Spring Boot默认并没有进行文件输出,只在控制台中进行了打印 logging.file=/home/zhou # 日志级别 debug ...

  6. SpringBoot-多环境切换相关(六)

    多环境切换 profile是Spring对不同环境提供不同配置功能的支持,可以通过激活不同的环境版本,实现快速切换环境: 方式一:多配置文件 我们在主配置文件编写的时候,文件名可以是 applicat ...

  7. 小D课堂 - 零基础入门SpringBoot2.X到实战_第14节 高级篇幅之SpringBoot多环境配置_59、SpringBoot多环境配置介绍和项目实战

    笔记 1.SpringBoot多环境配置介绍和项目实战(核心知识)     简介:SpringBoot介绍多环境配置和使用场景 1.不同环境使用不同配置         例如数据库配置,在开发的时候, ...

  8. SpringBoot-03-JSR303数据校验和多环境切换

    3.3 JSR303数据校验 先看如何使用 ​ Springboot中可以用@Validated来校验数据,如果数据异常则统一抛出异常,方便异常中心统一处理. ​ 这里我们写个注解让name只支持Em ...

  9. 史上最全Spring Cloud Alibaba--Nacos教程(涵盖负载均衡、配置管理、多环境切换、配置共享/刷新、灰度、集群)

    能够实现Nacos安装 基于Nacos能实现应用负载均衡 能基于Nacos实现配置管理 配置管理 负载均衡 多环境切换 配置共享 配置刷新 灰度发布 掌握Nacos集群部署 1 Nacos安装 Nac ...

  10. grunt之dev-pro环境切换

    在项目开发过程中和发布阶段需要在开发环境(dev)和生产环境(pro)之间切换,静态文件引用的切换等等. 使用grunt要如何解决上述问题,这里提供一个案列供参考. 用到的grunt插件: 文件合并: ...

随机推荐

  1. [数据库]Oracle数据迁移至HIVE(待续)

    step1 导出csv数据,并 call sql_to_csv('select * from BE_JJZKJCQKTJ', 'OUT_PATH', 'DA.BE_JJZKJCQKTJ.csv'); ...

  2. [数据库]MYSQL之存储过程

    一 存储过程的特点 MySQL 5.0 版本开始支持存储过程 1.1 定义 存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象. 存储过程是为了 ...

  3. 五月二十七日jdbc,算法以及数据库

    1.ResultSetMetaData接口主要获得结果集.例如:结果集字段数量和名字通过ResultSet的getMetaData()方法获得对应对象 public class app17_20 { ...

  4. [操作系统] - 进程状态&进程描述

    2.1 进程(Process) 2.1.1 定义 chatGPT版:一个具有独立功能的程序关于某个数据集合的一次运行活动 人话版:程序在并发环境中的执行过程& 进程是程序的一次执行 2.1.2 ...

  5. OpenAI-GPT

    操作系统:CentOS 7.6 安装依赖软件 进入 root 账号: sudo -i 安装部署 ChatGPT 必备的软件,并且启动 nginx : yum install git nginx -y ...

  6. 【性能】JDK和Jmeter的安装与配置

    一.JDK环境配置 1. 下载JDK 官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downl ...

  7. I-o-C 一篇概览

    一.ioC 容器和 Bean介绍 IoC(Inversion of Control )也被称之为 DI(dependency injection),名称侧重点略有不同. 所谓控制翻转即对象通过构造函数 ...

  8. 前端Vue项目打包性能优化方案

    一.前言 Vue 框架通过数据双向绑定和虚拟 DOM 技术,帮我们处理了前端开发中最脏最累的 DOM 操作部分, 我们不再需要去考虑如何操作 DOM 以及如何最高效地操作 DOM:但 Vue 项目中仍 ...

  9. 2022-04-23:给定一个长度为4的整数数组 cards 。你有 4 张卡片,每张卡片上都包含一个范围在 [1,9] 的数字。您应该使用运算符 [‘+‘, ‘-‘, ‘*‘, ‘/‘] 和括号 ‘

    2022-04-23:给定一个长度为4的整数数组 cards .你有 4 张卡片,每张卡片上都包含一个范围在 [1,9] 的数字.您应该使用运算符 ['+', '-', '*', '/'] 和括号 ' ...

  10. 【Qt 6】读写剪贴板

    剪贴板是个啥就不用多介绍了,最直观的功能是实现应用程序之间数据共享.就是咱们常说的"复制"."粘贴"功能. 在 Qt 中,QClipboard 类提供了相关 A ...