在项目开发的过程中,我们难免会遇到开发、测试、生产等环境的切换,而各个环境的配置肯定是不同的。传统的办法是在项目打包的时候修改配置文件。但人为做的事情难免产生意外。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. Python CGI apache在windows下安装

    1.首先去下载apache (http://httpd.apache.org/download.cgi)(Apache VC15 binaries and modules download) 2.下载 ...

  2. Linux 断网安装MySQL5.x操作步骤

    1.下载MySQL安装包 由于官网下载比较慢,暂时我这边采用的方法是通过网易云的centos镜像下载的地址是 http://mirrors.163.com/mysql/Downloads/MySQL- ...

  3. 3.JavaSE之注释

  4. [DP][SA][可持久化线段树]黑红兔

    源自 xyz32768 菜鸡的 FJ 省冬令营模拟赛题 原题 CF1063F Statement 给定一个长度为 \(n\) 的字符串 \(s\),仅包含小写英文字母 要从中从左往右选出若干段不相交的 ...

  5. HashMap在JDK7和JDK8中的区别

    在[深入浅出集合Map]中,已讲述了HashMap在jdk7中实现,在此就不再细说了 JDK7中的HashMap 基于链表+数组实现,底层维护一个Entry数组 Entry<K,V>[]  ...

  6. Java&Eclipse&Maven的折腾

    趁着寒假对于Java的余热,继续了对Java的征途.这次并没有太多琐碎的事情打断我的学习,于是借着这股热情去图书馆借了两本国外的书(中译版),对于程序的爱好一定要坚持下来,才开通了这个博客以坚持学习.

  7. HGE引擎改进

    基于HGEDX9版本修改. hge库: 1.全UNICODE化 2.增加时间模块:Timer_StartTick(),Timer_NowTick()等六个函数 3.增加服从正态分布的随机数生成函数:R ...

  8. JS-05-元素获取

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. Python zmq的三种简单模式

    ZMQ (以下 ZeroMQ 简称 ZMQ)是一个简单好用的传输层,像框架一样的一个 socket library,他使得 Socket 编程更加简单.简洁和性能更高. 是一个消息处理队列库,可在多个 ...

  10. wirkshark过滤规则

    https://blog.csdn.net/wojiaopanpan/article/details/69944970