SpringProfile轻松切换多环境配置文件

2019/04/10 10:10
阅读数 46

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

1582377859097

各文件内容如下:

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

1582378343139

取消勾选: Single instance only

1582378399992

原文出处:https://www.cnblogs.com/keatsCoder/p/12347382.html

展开阅读全文
yml
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部