在项目开发的过程中,我们难免会遇到开发、测试、生产等环境的切换,而各个环境的配置肯定是不同的。传统的办法是在项目打包的时候修改配置文件。但人为做的事情难免产生意外。Spring 为我们提供了一种多环境配置文件同时存在,而运行/打包时仅运行所选的配置文件的方式。具体的介绍如下:

Spring提供了两种属性:

spring.profiles.active

spring:
profiles:
# active: yaya
active: keats

指定激活哪个文件,值是 application-{profileName}.yml 中的 profileName。用于区分不同的运行环境

PS:如果 application.yml 和被激活的 yml 中同时配置了一个相同的键,被激活的yml中的值会覆盖 application.yml 中的值。

spring.profiles.include

spring:
profiles:
include: yayaDB,yayaRedis

指定包含(合并)多个yml的内容一起启动。这样有助于同环境下yml文件的分类管理

PS:像上面 include 值是多个的情况,除了使用 , 分隔的输入方式外,还可以使用 换行 - profileName 的方式,这是 yml 的一种语法。如果不清楚 yml 的语法,可以参考 SpringBoot入门及YML文件详解

spring:
profiles:
include:
- yayaDB # 注意换行和空格
- yayaRedis

接下来是一个示例的DEMO项目,项目的结构如下:

各文件内容如下:

application.yml

spring:
profiles:
active: yaya
# active: keats
server:
port: 9001 # 如果被激活的 yml 中有相同的配置,会覆盖此值

application-keats.yml

server:
port: 9000
eureka:
server:
enable-self-preservation: false # 关闭自我保护
eviction-interval-timer-in-ms: 4000 # 剔除服务间隔,单位/ms
instance:
hostname: localhost
client:
register-with-eureka: false # 是否将自己注册到注册中心
fetch-registry: false # 是否从Eureka中获取注册信息
service-url: # Eureka Client 的请求地址
defaultZone: http://#{eureka.instance.hostname}:#{server.port}/eureka/

application-yaya.yml

spring:
profiles:
include: yayaDB,yayaRedis

application-yayaDB.yml

# 专门配置DB 的yml,实际项目中可以根据需求,配置文件多了需要分类就分类,少了用不着分类就一种环境一个YML# 这里因为Eureka服务用不到连接数据库,用端口号配置信息代替
server:
port: 9100

application-yayaRedis.yml

# 可以专门用来配置Redis的信息。这里因为用不到Redis。我就用除端口以外的其他配置信息填充了
eureka:
server:
enable-self-preservation: false # 关闭自我保护
eviction-interval-timer-in-ms: 4000 # 剔除服务间隔,单位/ms
instance:
hostname: localhost
client:
register-with-eureka: false # 是否将自己注册到注册中心
fetch-registry: false # 是否从Eureka中获取注册信息
service-url: # Eureka Client 的请求地址
defaultZone: http://#{eureka.instance.hostname}:#{server.port}/eureka/

按照以上的 yml 配置之后,就可以通过注释与放开不同的 active,来实现环境的切换了。

顺便教大家另外一个技能:

Idea将同一个项目多次启动

选择对应的项目启动类,点击 Edit Configurations

取消勾选: Single instance only

SpringProfile轻松切换多环境配置文件的更多相关文章

  1. application.properties多环境配置文件、jar包外部配置文件、配置项加密、程序中配置使用

    一.简介 spring boot项目application.properties文件存放及使用介绍 二.方法一多环境配置文件 我们一般都会有多个应用环境,开发环境.测试环境.生产环境,各个环境的配置会 ...

  2. Linux用户环境配置文件

    用户操作环境配置文件: 从/etc/skel目录复制过来 .bashrc             打开新终端           /etc/bashrc .bash_profile       用户登 ...

  3. pyenv,轻松切换各种python版本

    pyenv,轻松切换各种python版本 解决什么问题 mac自带python2,md又不能删掉他 linux也自带python2,这玩意都过时了,也不赶紧换掉 安装pyenv git 安装 git ...

  4. Appium 切换上下文环境

    Appium 切换上下文环境,代码如下: private void switchToContext(String sContext) { LogManager.getLogger(this.getCl ...

  5. Bash环境配置文件

    一.环境配置文件读取优先级 其中~/.bash_profile,~/.bash_login,~/.profile三个文件只有一个有效,查找优先级从左至右降低.bash会一直检查是否有~/.bashrc ...

  6. iOS如何在一个包上切换正式环境和测试环境

    最近项目处于测试阶段,所以免不了每天都得打包给测试人员,由于我们公司规模比较大,项目环境也分为了三种:测试环境.预上线(预生产)环境.上线(生产)环境.所以每到了测试后期,每天打包的时间也占了不少,遇 ...

  7. Bash Shell的环境配置文件

    login shell:取得bash时需要完整的登录流程 non-login shell:取得bash接口的方法不需要重复登录,举例来说,你以x window登录Linux后,再以x的图形界面启动终端 ...

  8. spring-boot多环境配置文件

    spring-boot多环境配置文件 目录 配置 多环境配置文件名称要遵循格式 application-{profile}.yml application.yml spring: profiles: ...

  9. bash 的环境配置文件

    http://www.cnblogs.com/ggjucheng/archive/2012/11/01/2750179.html bash 的环境配置文件 你是否会觉得奇怪,怎么我们什么动作都没有进行 ...

随机推荐

  1. linux 反选删除文件

    一.背景 历史原因自动部署程序的历史版本没有自动删除脚本.导致服务器没有空间了.但是又不能将所有的备份都删除. 所以要求只保留一个备份版本,把其他的删除. 二. 要求 要求:删除 除了 2017110 ...

  2. MySql数据主从同步配置

    由于需要配置MySQL的主从同步配置,现将配置过程记录下,已被以后不时之需 MySql数据主从同步   1.1. 同步介绍 Mysql的 主从同步 是一个异步的复制过程,从一个 Master复制到另一 ...

  3. 2、Automapper安装及配置

    一. 安装 我们安装是在 vs 中使用Nuget的方式进行安装 不过安装时需注意一件事情就是,版本问题,我示例使用的是.net framework 4.5.2,所以我安装AutoMapper的版本是7 ...

  4. idea 2019.3 最新版破解教程

    背景 最近,idea又被整治了,所以一大批激活码都失效了.我之前已经有2018版的永久激活了,所以非常淡定~,也没打算升级版本.但是,最近发现周围的人都在讨论这个问题.于是,我也找到了2019.3最新 ...

  5. LeetCode 第17题--电话号码的组合(DFS)

    1. 题目 2.题目分析与思路 3.代码 1. 题目 输入:"23" 输出:["ad", "ae", "af", &qu ...

  6. libc.so.6修改链接指向后导致系统无法使用的原因及解决方法

    https://www.cnblogs.com/weijing24/p/5890031.html http://man.linuxde.net/ldconfig

  7. 利用geojson实现模型轨迹运动

    直接上代码 var viewer = new Cesium.Viewer('cesiumContainer'); //Set the random number seed for consistent ...

  8. 找不到文件异常java.io.IOException: Resource [classpath:shiro.ini] could not be found.

    情景 tomcat启东时,老是报错,在classpath下找不到配置文件,但是配置文件已经放在resource目录下了 解决方案 出现该异常的原因,是因为新建的conf文件夹,识别不了,因为没有设置成 ...

  9. 深入分析Java反射(一)-核心类库和方法

    前提 Java反射的API在JavaSE1.7的时候已经基本完善,但是本文编写的时候使用的是Oracle JDK11,因为JDK11对于sun包下的源码也上传了,可以直接通过IDE查看对应的源码和进行 ...

  10. vuex之getter(二)

    说明 使用vue,如果想对data数据派生一些状态,我们就用到计算属性或者侦听器,同样vux想要派生state中的一些状态,可以在store中定义一个getters属性,它相当于state的计算属性. ...