原创

SpringBoot 系列教程(二十二):SpringBoot基于Profile的几种多环境配置方式

版权声明: 本文为博主原创文章,转载请注明原文出处!
本文链接:https://thinkingcao.blog.csdn.net/article/details/87284097

 

目录

一. 背景

二、什么是Profile

三、多profile环境定义形式

1 . 多Profile文件定义形式

2 . yml多文档块形式

四、激活指定的profile方式

1 . 配置文件application.yml中指定spring.profiles.actice: dev

2. 当前项目maven激活环境

3. 在命令行激活

4. IDE开发工具里激活

5. 使用虚拟机参数方式激活

 五、spring boot 中active的profile会和默认的配置合并吗


一. 背景

    在日常的应用开发中,往往需要不同配置文件来支撑应用程序在不同环境下运行,如开发环境,测试环境,生产环境等,程序在不同的环境下可能需要不同的配置,如不同数据源等,如果每次将应用程序部署在不同的环境下时都要去修改配置文件就会显得有些麻烦,做一些没必要的操作,此时就可以通过配置Profile属性,使程序在不同的环境中使用不同的配置文件。

二、什么是Profile

    Profile 可以让 Spring 对不同的环境提供不同配置的功能,可以通过激活、指定参数等方式快速切换环境;Profile属性可以".yml"格式和".properties" 配置文件中使用,定义格式是:application-{profile}.yml或者application-{profile}.properties,其中的profile就为自己所定义的环境名称,也就是环境的配置文件以"application-环境名.yml"命名,通常有:dev、test、prod等等,同时SpringBoot官方认为yml格式的配置可读性比properties格式的配置要高,推荐使用yml格式,因此我们在后面创建SpringBoot项目时,尽量采用application.ym。yml格式的配置文件;

三、多profile环境定义形式

1 . 多Profile文件定义形式

创建SpringBoot-profile项目,新建以下4种环境的配置文件,记得加入web依赖,否则启动项目不会打印tomcat端口

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

注: SpringBoot官方默认使用的是aplication.yml的配置信息

            环境

                         定义形式

            端口

           默认环境

                    aplication.yml

           8080

           开发环境

                    aplication-dev.yml

           8081

           测试环境

                    aplication-test.yml

           8082

           生产环境

                    aplication-prod.yml

            80

 

 

 

 

 

 

2 . yml多文档块形式

 注: 配置文件中也支持使用多文档块的方式创建多环境,是用 --- (三个-)表示一个文档块 ,如果不指定启动别的文档块,默认启动第一个文档块,可以通过  spring.profiles.actice=dev 来指定启动别的文档块,而且多文档块方式只有yml格式的配置文件能够支持,properties格式的是不支持的。使用图解说明如下:

 

四、激活指定的profile方式

1 . 配置文件application.yml中指定spring.profiles.actice: dev

2. 当前项目maven激活环境

 (1).首先在application.yml中指定 '@profileActive@'

   

##默认环境(主配置文件)
server:
  port: 8080
spring:
  profiles:
    ## 通过active激活环境
    active: '@profileActive@'

 

(2). 在pom.xml里先定义三个profile

(3). 在build的标签下, 先排除全部,再添加当前通过-P参数激活的profile

 

(4). 启动项目,显示当前启动项目读取的激活环境为 dev

3. 在命令行激活

--spring.profiles.active=dev

比如项目部署上线后,将项目打成jar包,可使用这种激活方式:

如: java -jar springboot-profile-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev;

4. IDE开发工具里激活

可以在编辑器idea,eclipse的run configurations——>Program arguments中指定参数  --spring.profiles.active=dev

 

5. 使用虚拟机参数方式激活

可以在编辑器idea,eclipse的run configurations——>VM options中指定参数  -Dspring.profiles.active=prod ,注意:-D是固定写法

 

五、spring boot 中active的profile会和默认的配置合并吗

  通过以上学习SpringBoot的总结,学习了Profile在应对多环境情况下的一些配置和使用,同时在文章的结尾,我想到了一个问题,那就是我们在使用active激活了其他环境的配置文件时,默认的application.yml配置会和active的profile配置合并吗,有些公共的配置我们是放在默认的application.yml文件中配置的,在其他环境中没有的情况,看到网上有个经典的例子,来看下一下这个博客:https://www.cnblogs.com/grey-wolf/p/8676125.html

结论是: active的配置会合并默认配置后,一起生效。针对默认配置中已存在的项,活跃配置会覆盖之。

 

以上就是在学习SpringBoot时,Profile对于多环境配置方式以及激活方式的一些学习总结,欢迎阅读;

文章最后发布于: 2019-02-14 17:14:09
展开阅读全文
0 个人打赏
私信求帮助

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览