SpringBoot 如何通过 Profile 实现不同环境下的配置切换

目录
  • 一、搭建工程
  • 二、多文件配置方式
  • 三、多片段配置方式
  • 四、使用外部配置文件

SpringBoot 通过 profile 实现在不同环境下的配置切换,比如常见的开发环境、测试环境、生产环境。

SpringBoot 常用配置文件主要有 2 种:properties 文件和 yml 文件。对于 properties 文件来说,主要通过多 profile 配置文件的方式来实现;对于 yml 文件来说,主要通过多片段的方式来实现(在一个 yml 文件中通过 3 个横杠来划分配置片段)。

Profile 在实际工作中使用比较方便,SpringBoot 程序开发好后,最终会打包成 jar 包进行使用,我们可以把配置文件放在外部,在外部的配置文件中指定 profile 名称,从而决定采用哪种环境(开发环境、测试环境、生产环境)的配置参数。

本篇博客主要通过代码的方式,介绍 SpringBoot 有关 profile 的使用,在博客的最后会提供源代码下载。

一、搭建工程

本篇博客的 Demo 搭建了 2 个 SpringBoot 工程,分别展示 2 种 profile 的使用方式。

Demo1 通过多个 properties 文件来实现,Demo2 通过单个 yml 文件来实现,搭建结果如下所示:

对于 SpringBoot 来说,如果编写的类,在启动类所在的包或子包下时,那么就不需要再启动类上配置扫描包了,因为 SpringBoot 默认情况下就会扫描启动类所在的包及其子包下所有的类文件中的注解。因此为了演示方便,后续的 Demo 都在启动类所在的包或子包下编写类文件。

在两个 Demo 中都编写了相同代码的 TestController 类,用于提供无参数接口访问,返回的结果是当前所启用的 profile 名称和 profile 配置文件中配置的端口号,方便大家在进行 Demo 测试时进行验证结果,其实也可以直接看 IDEA 控制台中打印的信息进行验证结果。下面列出 TestController 类的具体内容:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @Autowired
    private Environment env;

    @RequestMapping("/getport")
    public String getPort()
    {
        StringBuilder sb = new StringBuilder();

        String[] activeProfiles = env.getActiveProfiles();
        sb.append("启动的 profile 名称为:").append(activeProfiles[0]);

        sb.append("<br/>");

        String portValue = env.getProperty("server.port");
        sb.append("启动的端口为:").append(portValue);
        return sb.toString();
    }
}

二、多文件配置方式

Demo1 中的 SpringBoot 程序采用 properties 文件作为配置文件,因此采用多文件的配置方式实现 profile 。

SpringBoot 的配置文件,必须以 application 开头,对于 properties 文件来说,采用 application-profile名称.properties 的命名形式实现 profile 多环境配置,在 Demo1 中使用了 application-dev.properties ,application-test.properites ,application-pro.properties 三个文件来代表开发环境、测试环境、生产环境的配置文件,配置内容分别如下,为了方便,这里仅仅配置 SpringBoot 的启动端口来进行演示:

# application-dev.properties 配置内容
# 配置文件必须以 application 开头
# 后面的 dev 表示 profile 配置文件的名称
server.port=8081
# application-test.properties 配置内容
# 配置文件必须以 application 开头
# 后面的 test 表示 profile 配置文件的名称
server.port=8082
# application-pro.properties 配置内容
# 配置文件必须以 application 开头
# 后面的 pro 表示 profile 配置文件的名称
server.port=8083

要想使用具体的一种 profile 配置文件,需要在 application.properties 进行配置 profile 名称:

# application-pro.properties 配置内容
# 本 Demo 中编写了多个以 application 开头的配置文件
# 通过以下配置项指定 profile 名称,设置所要启动的配置文件
spring.profiles.active=test

然后启动 Demo1 的 SpringBoot 程序,如上面的例子采用的是 profile 是 test ,对应的启动端口是 8082 ,因此访问 TestController 中提供的 localhost:8082/getport 接口,即可对 profile 配置信息进行验证。

三、多片段配置方式

Demo2 中的 SpringBoot 程序采用 yml 文件作为配置文件,因此采用多片段的配置方式实现 profile 。

在 application.yml 中采用三个横杠(---)来分隔配置片段,如下所示:

# 本 Demo 中只编写了一个 application.yml 的配置文件
# 通过三个横杠(---)来分隔开 3 种配置文件
# 通过 spring.config.activate.on-profile 设置 profile 的名称

# 通过以下配置项指定 profile 名称,设置所要启动的配置文件
spring:
  profiles:
    active: pro
---
server:
  port: 9091

spring:
  config:
    activate:
      on-profile: dev
---
server:
  port: 9092

spring:
  config:
    activate:
      on-profile: test
---
server:
  port: 9093

spring:
  config:
    activate:
      on-profile: pro

然后启动 Demo2 的 SpringBoot 程序,如以上的例子中采用的 profile 是 pro,对应的启动端口是 9093 ,因此访问 TestController 中提供的 localhost:9093/getport 接口,即可对 profile 配置信息进行验证。

四、使用外部配置文件

SpringBoot 程序开发好之后,会连同配置文件一起打包成 jar 包,导致无法更改配置文件。因此我们可以将配置文件复制一份到外部,与 jar 包放在一起,采用命令行启动 SpringBoot 程序,并通过命令行参数(--spring.config.location)指定所使用的外部配置文件路径。在外部配置文件中可以修改 profile 配置,实现不同环境下配置的切换。

我们将 Demo1 打包的 jar 包和配置文件,放在 d:\javacode\demo1 文件夹中,如下图所示:

然后在此目录下运行以下命令行,启动 SpringBoot 程序:

D:\javacode\demo1> java -jar .\demo1-0.0.1-SNAPSHOT.jar --spring.config.location=.\application.properties

由于在 application.properties 中配置的 profile 是 test ,因此启动的是 8082 端口。

我们将 Demo2 打包的 jar 包和配置文件,放在 d:\javacode\demo2 文件夹中,如下图所示:

然后在此目录下运行以下命令行,启动 SpringBoot 程序:

D:\javacode\demo2> java -jar .\demo2-0.0.1-SNAPSHOT.jar --spring.config.location=.\application.yml

由于在 application.yml 中配置的 profile 是 pro,因此启动的是 9093 端口。

到此为止,有关 SpringBoot 通过 profile 实现不同环境下配置信息的切换,已经介绍完毕。

到此这篇关于SpringBoot通过Profile实现不同环境下的配置切换的文章就介绍到这了,更多相关SpringBoot配置切换内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot多配置切换的配置方法

    1. 切换需求 有时候在本地测试是使用8080端口,可是上线使用的又是80端口. 此时就可以通过多配置文件实现多配置支持与灵活切换 2.多配置文件 3个配置文件: 核心配置文件:application.properties 开发环境用的配置文件:application-dev.properties 生产环境用的配置文件:application-pro.properties 这样就可以通过application.properties里的spring.profiles.active 灵活地来切换使用

  • SpringBoot 多Profile使用与切换方式

    Spring中Profile对不同环境提供不同配置功能的支持,可以通过激活.指定参数等方式快速切换环境. 文件名格式:application-{profile}.properties 可以建立多个properties(yaml)文件来不断的切换 application-dev.properties server.port=8082 application-prod.properties server.port=8083 application.properties server.port=808

  • SpringBoot Profiles 多环境配置及切换

    目录 前言 默认环境配置 默认运行环境 多环境配置 多环境切换 小结 前言 大部分情况下,我们开发的产品应用都会根据不同的目的,支持运行在不同的环境(Profile)下,比如: 开发环境(dev) 测试环境(test) 预览环境(pre) 生产环境(prod) 这里的 环境 实际上是一个统称,不同的环境可能代表着 使用的域名.端口.实例数目是不同的: 连接的数据库地址.端口.名称是不同的: 使用的日志输出格式.级别.保存时间是不同的: 以数据库为例,应用在开发环境下运行时,连接的是开发环境对应的

  • springboot学习笔记之 profile多环境配置切换的实现方式

    前言 一个应用程序从开发到上线,往往需要经历几个阶段,例如开发.测试.上线.每个阶段所用到的环境的配置可能都是不一样的,Springboot 应用可以很方便地在各个环境中对配置进行切换.所以,今天主要介绍Springboot profiles实现多环境配置切换. profiles多环境配置切换的四种方式 多个配置文件的方式yml 多文档块方式 设置程序参数 设置虚拟机参数 1.多个配置文件的方式 1.1.修改application.properties server.port=8080 1.2.

  • SpringBoot 如何通过 Profile 实现不同环境下的配置切换

    目录 一.搭建工程 二.多文件配置方式 三.多片段配置方式 四.使用外部配置文件 SpringBoot 通过 profile 实现在不同环境下的配置切换,比如常见的开发环境.测试环境.生产环境. SpringBoot 常用配置文件主要有 2 种:properties 文件和 yml 文件.对于 properties 文件来说,主要通过多 profile 配置文件的方式来实现:对于 yml 文件来说,主要通过多片段的方式来实现(在一个 yml 文件中通过 3 个横杠来划分配置片段). Profil

  • 详解springboot + profile(不同环境读取不同配置)

    具体做法: 不同环境的配置设置一个配置文件,例如:dev环境下的配置配置在application-dev.properties中:prod环境下的配置配置在application-prod.properties中. 在application.properties中指定使用哪一个文件 1.application-dev.properties(dev环境下的配置) profile = dev_envrimont 2.application-prod.properties(prod环境下的配置) pr

  • Mysql 5.7.17 winx64免安装版,win10环境下安装配置图文教程

    下载地址:http://dev.mysql.com/downloads/file/?id=467269 1.解压到自定义目录:我解压到了D盘的根目录 2.添加一个my.ini文件 配置如下: # 设置mysql客户端默认字符集 default-character-set=utf8 #安装目录 basedir = D:\mysql-5.7.17-winx64 #数据存放目录 data目录是要单独创建的,记得是个空文件夹 datadir =D:\mysql-5.7.17-winx64\data #端

  • Windows环境下如何配置wamp的虚拟域名

    修改服务域名,其主要就是修改关于apache的配置文件 1打开apache的mod_rewrite功能 LoadModule rewrite_module modules/mod_rewrite.so//删除前面的# 2引入http-vhosts文件 Include conf/extra/httpd-vhosts.conf//删除前面的# 3进入conf/extra文件夹找到http-hosts文件 NameVirtualHost*:80 //绑定80端口 listen 端口号//手动设置监听

  • vue3不同环境下实现配置代理

    目录 不同环境下如何配置代理 第一种情况 第二种情况 Vue设置本地代理 本地安装Whistle 谷歌浏览器安装Proxy SwitchyOmega扩展 浏览器操作 不同环境下如何配置代理 实际开发的时候,经常会遇到并行开发的需求,会出现第一个需求接口转发是一个地址,下一个需求接口转发是一个地址,这时候如何解决呢? 第一种情况 前端也不申请多套环境. 本地开发时,多加个代理,比如叫api2,然后在当前需求的接口前面使用这个. 但是会出现个问题,前端页面加载后,只有涉及当前需求的模块接口是通的,其

  • VTK8.1 在 Qt5.9 环境下的配置编译和安装过程

    目录 0 编译环境 0.1 软件包及版本 0.2 本地目录说明 1 VTK下载 1.1 下载VTK-8.1.1.zip,VTKData-8.1.1.zip文件 1.2 解压 2.CMake配置VTK for Qt编译环境 2.1 启动CMake,指定源码目录和编译目录,点击Configure. 2.2 指定VS版本 2.3 配置编译选项(1) 2.4 配置编译选项(2) 2.5 Generate工程 2.6 启动VS2015开始编译 3 在VS2015中编译VTK工程 3.1 编译 3.2 安装

  • windows环境下php配置memcache的具体操作步骤

    首先要安装好php和apache环境.我用的是wamp整合的套件php 5.2.8apache 2.2.1.1这些都准备好了后,就到 memcache 官网去下载 windows 下的 memcache.exe 这个程序 然后把他放在 c:\memcache 目录下打开 cmd 命令 输入cd c:\memcache 安装memcache.exe -p install 安装完成后memcache.exe -p start 成功开启 memcache后 就到 php/ext 目录下 把 php_m

  • 在Mac OS的PHP环境下安装配置MemCache的全过程解析

    安装服务端 memcache是项目名,而在服务端的驻留进程叫memcached(linux的守护进程一般都是在后面加个d).在OSX下使用brew可以快速安装memcache: $ sudo brew install memcached memcache的依赖:openssl和libevent会自动下载并安装. 安装完成后,使用如下命令启动: $ sudo memcached -m 32 -p 11211 -d 安装php扩展 使用php操作memcache前,需要安装php的扩展,php的扩展

  • windows环境下memcache配置方法 详细篇

    将memcache服务器安装包解压到C:\memcached文件夹后,使用cmd命令窗口安装. 1>开始>运行:CMD(确定) 2>cd C:\memcached(回车) 3>memcached -d install(回车 这步执行安装) 4>memcached -d start(回车 这步执行启动memcache服务器,默认分配64M内存,使用11211端口) 此时memcache服务器已经可以正常使用了. 在服务端运行: # ./memcached -d -m 2048

  • go项目中环境变量的配置

    目录 一.为什么要配置文件 二.在go中使用配置文件 三.使用结构体的方式读取 四.区分开发环境和生产环境 五.在gin中集成配置文件 一.为什么要配置文件 1.容易编辑,配置比较集中,方便修改,在大业务量的系统里面,通过配置会方便后人理解整个系统的架构 2.做到业务代码和环境解耦,环境配置变量不侵入到代码层面 3.不同的环境切换比较方便 二.在go中使用配置文件 1.viper网站地址 2.本地安装 go get github.com/spf13/viper 3.简单的读取配置文件 packa

随机推荐