在项目开发的过程当中,咱们不免会遇到开发、测试、生产等环境的切换,而各个环境的配置确定是不一样的。传统的办法是在项目打包的时候修改配置文件。但人为作的事情不免产生意外。Spring 为咱们提供了一种多环境配置文件同时存在,而运行/打包时仅运行所选的配置文件的方式。具体的介绍以下:html
spring: profiles: # active: yaya active: keats
指定激活哪一个文件,值是 application-{profileName}.yml 中的 profileName。用于区分不一样的运行环境。spring
PS:若是 application.yml 和被激活的 yml 中同时配置了一个相同的键,被激活的yml中的值会覆盖 application.yml 中的值。数据库
spring: profiles: include: yayaDB,yayaRedis
指定包含(合并)多个yml的内容一块儿启动。这样有助于同环境下yml文件的分类管理app
PS:像上面 include 值是多个的状况,除了使用 , 分隔的输入方式外,还可使用 换行 - profileName 的方式,这是 yml 的一种语法。若是不清楚 yml 的语法,能够参考 SpringBoot入门及YML文件详解ide
spring: profiles: include: - yayaDB # 注意换行和空格 - yayaRedis
接下来是一个示例的DEMO项目,项目的结构以下:测试
各文件内容以下:fetch
application.ymlurl
spring: profiles: active: yaya # active: keats server: port: 9001 # 若是被激活的 yml 中有相同的配置,会覆盖此值
application-keats.ymlidea
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.ymlcode
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,来实现环境的切换了。
顺便教你们另一个技能:
选择对应的项目启动类,点击 Edit Configurations
取消勾选: Single instance only