SpringProfile轻松切换多环境配置文件
在项目开发的过程中,我们难免会遇到开发、测试、生产等环境的切换,而各个环境的配置肯定是不同的。传统的办法是在项目打包的时候修改配置文件。但人为做的事情难免产生意外。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轻松切换多环境配置文件的更多相关文章
- application.properties多环境配置文件、jar包外部配置文件、配置项加密、程序中配置使用
一.简介 spring boot项目application.properties文件存放及使用介绍 二.方法一多环境配置文件 我们一般都会有多个应用环境,开发环境.测试环境.生产环境,各个环境的配置会 ...
- Linux用户环境配置文件
用户操作环境配置文件: 从/etc/skel目录复制过来 .bashrc 打开新终端 /etc/bashrc .bash_profile 用户登 ...
- pyenv,轻松切换各种python版本
pyenv,轻松切换各种python版本 解决什么问题 mac自带python2,md又不能删掉他 linux也自带python2,这玩意都过时了,也不赶紧换掉 安装pyenv git 安装 git ...
- Appium 切换上下文环境
Appium 切换上下文环境,代码如下: private void switchToContext(String sContext) { LogManager.getLogger(this.getCl ...
- Bash环境配置文件
一.环境配置文件读取优先级 其中~/.bash_profile,~/.bash_login,~/.profile三个文件只有一个有效,查找优先级从左至右降低.bash会一直检查是否有~/.bashrc ...
- iOS如何在一个包上切换正式环境和测试环境
最近项目处于测试阶段,所以免不了每天都得打包给测试人员,由于我们公司规模比较大,项目环境也分为了三种:测试环境.预上线(预生产)环境.上线(生产)环境.所以每到了测试后期,每天打包的时间也占了不少,遇 ...
- Bash Shell的环境配置文件
login shell:取得bash时需要完整的登录流程 non-login shell:取得bash接口的方法不需要重复登录,举例来说,你以x window登录Linux后,再以x的图形界面启动终端 ...
- spring-boot多环境配置文件
spring-boot多环境配置文件 目录 配置 多环境配置文件名称要遵循格式 application-{profile}.yml application.yml spring: profiles: ...
- bash 的环境配置文件
http://www.cnblogs.com/ggjucheng/archive/2012/11/01/2750179.html bash 的环境配置文件 你是否会觉得奇怪,怎么我们什么动作都没有进行 ...
随机推荐
- JUnit 5和Selenium基础(二)
使用Selenium内置的PageFactory实现页面对象模式 在这一部分中,将通过Selenium的内置PageFactory支持类来介绍Page Object模式的实现.PageFactory提 ...
- 如何在ArcGIS中恢复注记文字
文字标注是地图上一种特殊的视觉元素,可通过文字表达图形符号难以说明的地图内容,它与图形符号结合在一起存在于地图上,是关乎地图构图美的关键因素之一. MapGIS软件下子图对象和注释对象统统保存在点文件 ...
- rabbitmq系列(二)几种常见模式的应用场景及实现
一.简单模式 原理:生产者将消息交给默认的交换机,交换机获取消息后交给绑定这个生产者的队列(投递规则为队列名称和routing key 相同的队列),监听当前队列的消费者获取信息并执行消费逻辑. 场景 ...
- 数据量不足,MedicalNet 如何助力医疗影像 AI 突破瓶颈?
导读 |近日,云+社区技术沙龙“腾讯开源技术”圆满落幕.本次沙龙邀请了多位腾讯技术专家,深度揭秘了腾讯开源项目TencentOS tiny.TubeMQ.Kona JDK.TARS以及Medical ...
- cogs 293. [NOI 2000] 单词查找树 Trie树字典树
293. [NOI 2000] 单词查找树 ★★☆ 输入文件:trie.in 输出文件:trie.out 简单对比时间限制:1 s 内存限制:128 MB 在进行文法分析的时候,通常需 ...
- swagger生成错误问题 汇总解决
Unable to render this definition The provided definition does not specify a valid version field. Ple ...
- 每天玩转3分钟 MyBatis-Plus - 2. 普通查询
每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 mybatis-plus的查询功能非常强大, 这一篇,我们来看下mybati ...
- kubernetes concepts -- Pod Lifecycle
Pod Lifecycle This page describes the lifecycle of a Pod. Pod phase A Pod’s status field is a PodSta ...
- python 进程管道
数据不安全,不常用 import time from multiprocessing import Pipe, Process def producer(prod, cons, name, food) ...
- 缓存读写策略 - Cache Aside.md
场景描述 比如一条数据同时存在数据库.缓存,现在你要更新此数据,你会怎么更新? 先更新数据库?还是先更新缓存? 其实这两种方式都有问题. (1)先更新数据库,后更新缓存 这样会造成数据不一致. A 先 ...