zoukankan      html  css  js  c++  java
  • 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项目,项目的结构如下:

    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

  • 相关阅读:
    并发数据库事务缺锁导致的数据不一致情况:丢失更新,脏读,不可重复读,幻读
    Spring boot 如何读取jar包外面的properties文件
    安卓自定义组合控件--toolbar
    [转]ThoughtWorks(中国)程序员读书雷达
    [转]Design Pattern Interview Questions
    [转]Design Pattern Interview Questions
    [转]Design Pattern Interview Questions
    [转]Design Pattern Interview Questions
    OpenCV 使用C++获取摄像头数据并保存示例
    [原]opencv图像裁剪
  • 原文地址:https://www.cnblogs.com/keatsCoder/p/12347382.html
Copyright © 2011-2022 走看看