Spring Boot学习笔记(十):Spring Boot 之 profile 多环境支持

前言

        在日常开发中,项目通常被分为:开发测试预发布线上四个环境。比如说针对数据库连接,每个环境的数据库连接也都是不一样的。

        我们通常会将这些参数信息都配置在一个配置文件中,然后通过很简单的一个操作,便可以在这几个环境之间来回切换,简化我们的开发过程。

        Maven 可以为我们提供多环境支持,在 pom.xml 中,可以通过配置 <profile>这个标签的方式,来解决多环境切换。

        Spring Boot 也为我们提供了 profile 多环境支持。profile 可以满足 Spring 对不同的环境提供不同配置的功能,通过激活、指定参数等方式来快速切换环境。接下来,我们分别通过 .properties 和 .yml 配置文件两种方式,来介绍 Spring Boot 提供的 profile 多环境支持。

1.properties配置

       我们在主配置文件编写时,文件名可以是 application-{profile}.properties,全局配置默认使用 application.properties的配置;

我们可以添加 3 个配置文件,分别是:

application.propertie:全局配置文件
application-dev.propertie:开发环境配置文件
application-test.propertie:测试环境配置文件

现在,我们为每个配置文件设置不同的端口号,通过端口号来展示 profile 多环境支持。

//application.properties
server.port=8080
//application-dev.properties
server.port=8081
//application-test.properties
server.port=8082

比如现在需要切换到开发环境,则需要在主配置文件中添加如下参数配置,来激活相对应的 profile:

//application.properties
server.port=8080
//(如下配置)表示切换到开发环境
spring.profile.active=dev 

测试如图所示:
在这里插入图片描述
        接下来,不同环境的 MySQL 数据库等各种不同连接参数,就可以在相对应的不同环境的 properties 配置文件中进行配置了。只需要在全局配置文件中,使用spring.profiles.active=xxx来进行简单切换即可。

2.yml配置

yml 配置文件,针对 profile 多环境支持,有两种方式可以实现。

第一种:同 properties 一模一样

        添加 application.yml、application-dev.yml、application-test.yml 等多个配置文件,在全局配置文件 application.yml 中,使用如下方式来完成对个环境之间的切换。

server:
  port: 8080
spring:
  profiles:
    active: dev

第二种:使用 yml 提供多文档块方式

        使用多文档块方式,可以省去 application-dev.yml、application-test.yml 多个配置文件的编写。只需要使用一个 application.yml 即可。我们选择激活 test 测试环境,此时 Tomcat 便已经在 test 环境相对应的 8082 端口启动,配置如下图所示:
在这里插入图片描述
使用文档块方式,如何激活 profile?

  1. 可以通过 application.yml 全局配置文件,直接指定;(也可以通过如下第2、3种方式,通过第2、3 种方式配置的优先级,大于直接在 application.yml 配置文件中的配置)
  2. 在配置中传入命令行参数(在Program arguments中,添加 --spring.profiles.active=dev)
  3. 在配置中传入虚拟机参数(在 VM options中,添加-Dspring.profiles.active=dev)
  4. 打包上线时,可以通过命令方式:java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev;在最后通过 --spring.profiles.active=dev的方式指定。(上线时这种方式比较方便,可以通过参数来随时切换环境)
    在这里插入图片描述

Profile 多环境支持,介绍到此为止

如果本文对你有所帮助,那就给我点个赞呗

End

发布了301 篇原创文章 · 获赞 66 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/lzb348110175/article/details/105150079