springboot使用profile结合maven实现多环境配置

泡^泡      2022-03-24     465

关键词:

我们在开发项目的时候,经常都会使用到多环境配置。springboot提供了非常方便的profile来做多环境配置。以下内容我们将使用2个环境配置:开发环境dev、生产环境prod。如果需要更多的环境配置依样画葫芦新增就好。

首先springboot的支持properties和yml两种形式的配置文件。我个人比较喜欢yml这种形式。相比properties有更好的层级关系,以及少些了很多内容,看起来也比较简洁。这里我将使用yml来配置。

我们在resources目录下新建springboot的配置文件application.yml,内容暂时放空。因为我们要建开发和生产2个环境的配置,所以我们在resources目录下再新建application-dev.yml和application-prod.yml两个文件。结构如下:

说明:

总结就是:x环境的配置就放到application-x.yml文件中去。

如果现在你直接启动的话,你会发现,springboot还是引用的公共环境的配置,我们新增的dev和prod配置并没有生效,这是为什么呢?因为你没有告诉springboot要使用哪个环境的配置,所以springboot自己也懵逼,于是他只加载了application.yml的配置文件。

为了解决这个问题。我们需要在启动的时候对需要加载的环境进行配置,这里有2种方法。

1、启动的时候增加–spring.profiles.active=dev参数指定使用dev环境。
命令行jar包执行

java -jar demo.jar --spring.profiles.active=dev

idea开发调试如红框所示

2、配置文件中指定
在application.yml中增加如下配置,指定使用dev环境配置。

spring:
  profiles:
    active: dev

到这里我们已经完成了springboot提供的profile实现多环境的配置,是不是非常方便。但是我还是觉得有点麻烦,考虑到maven也有一个profile配置,而且idea针对maven的配置提供可一个窗口用来切换,于是我就想把两个结合起来。

只需要勾选相应的选项即可切换到对应的环境。如何实现呢?我们只需要在项目的pom文件中增加。

<profiles>
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <env>dev</env>
        </properties>
    </profile>

    <profile>
        <id>prod</id>
        <properties>
            <env>prod</env>
        </properties>
    </profile>
</profiles>

然后对application.yml进行简单的修改。

spring:
  profiles:
    active: @env@

即可实现我们要的效果。
注:maven切换环境之后需要使用maven编译一下。

idea中maven的选项卡的lifecycle点一下compile就好了。

说一下原理:我们在maven的profile中指定了2个环境。一样是dev和prod。其中dev环境是默认激活的环境。并且针对不同的环境都指定了一个env的变量。dev下env变量值是dev,prod下env变量值是prod。

在application.yml中我们使用@env@代替了原来dev的位置。意思是maven在编译的时候,会将@env@替换成maven中profile配置的env变量的值。这也就是为啥切换环境的时候需要使用maven对项目进行一下编译的原因。

这样我们就实现了springboot的profile和maven的profile的结合,完成了项目多环境的配置。大家可以自己尝试一下。

springboot环境配置(profile)切换

SpringBoot集成教程SpringBoot介绍SpringBoot开发环境搭建(Eclipse)SpringBootHelloWorld(restful接口)例子springboot连接Mysqlspringboot配置druid连接池连接mysqlspringboot集成mybatis(1)springboot集成mybatis(2)–使用pagehelper实现分页springboot集 查看详情

将 Java Profiler (VisualVM) 与 Oracle 应用服务器 (OAS) 结合使用

】将JavaProfiler(VisualVM)与Oracle应用服务器(OAS)结合使用【英文标题】:UsingJavaProfiler(VisualVM)withOracleApplicationServer(OAS)【发布时间】:2013-07-2207:37:06【问题描述】:我需要优化JSF应用程序。它在localhostOracleApplicationServer10g(OAS)上运行。... 查看详情

springboot配置多个yml文件(代码片段)

springboot配置多个yml文件参考springboot配置多个yml文件maven(三)最详细的profile的使用实战为生产和开发分别配置一个profile。每个都有多个文件。profile每个profile都应该有唯一的id,可以同时激活多个profile,每个profile提供一些配置... 查看详情

springboot属性配置和使用(代码片段)

SpringBoot属性配置和使用SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。简单说就... 查看详情

我们公司使用了6年的springboot项目部署方案!打包+shell脚本部署详解,稳的一批!...

本篇和大家分享的是SpringBoot打包并结合Shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作;profiles指定不同环境的配置maven-assembly-plugin打发布压缩包分享shenniu_publish.sh程序启动工具linux上使用shenni... 查看详情

springboot多环境配置和切换

...往需要用到开发,测试,生产等环境,为了方便环境的切换,springboot提供了profile功能.profile是spring对不同坏境提供不同配置功能的支持,可以通过激活,指定参数等方式快速切换.一共有三种方式,各位可以根据项目使用最适合自己的那一... 查看详情

springboot-使用yml文件配置多环境

两种配置方式1:在一个yml文件中,2:在多个yml文件中1一个yml文件application.ymlspring: profiles:  active:dev---#开发环境配置spring: profiles:devserver: port:1000---#测试环境配置spring: profiles:stgserver:  查看详情

我们公司使用了6年的springboot项目部署方案!打包+shell脚本部署详解,稳的一批!...

本篇和大家分享的是SpringBoot打包并结合Shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作;profiles指定不同环境的配置maven-assembly-plugin打发布压缩包分享shenniu_publish.sh程序启动工具linux上使用shenni... 查看详情

@async异步注解与springboot结合使用

当你在service层需要启动异步线程去执行某些分支任务,又不希望显式使用Thread等线程相关类,只想专注于实现业务逻辑代码开发,可以使用@Async异步注解。1、使用@Async异步注解Controller层方法://批量插入用户@RequestMapping("/user/ad... 查看详情

结合springboot使用jdbc框架连接数据库

...ource利用DataSource创建出Jdbctemplate使用jdbctemplate完成sql操作springboot中快速配置jdbc连接新建一个配置包一个类一个数据库配置使用@Configuration定义配置类 这个类中可以有多个@Bean注解的方法这谢方法返回的对象都会被加载到容器... 查看详情

springboot下的dubbozookeeper结合使用

...个zookeeper就跟玩似的。这里记录一下遇到的一些坑!1、springboot引入dubbo的配置文件网上搜索了一下,大概的两种方式1、&nb 查看详情

springboot配置属性之spring.profiles.include

参考技术Aspring.profiles.active属性和其他属性一样都遵循相同的排列规则,最高的PropertySource获胜。也就是说,你可以在application.properties中指定生效的配置,然后使用命令行开关替换它们。有时,将特定的配置属性添加到生效的配... 查看详情

springboot结合啥前端框架

参考技术A可以配套springboot的前端模板thymeleaf,freemarker等,或者前后端分离,直接使用html手写 参考技术B1.SpringBoot是什么,解决哪些问题1)SpringBoot使编码变简单2)SpringBoot使配置变简单3)SpringBoot使部署变简单4)SpringBoot使监控变简单... 查看详情

第十四章springboot+profile(不同环境读取不同配置)

具体做法:不同环境的配置设置一个配置文件,例如:dev环境下的配置配置在application-dev.properties中;prod环境下的配置配置在application-prod.properties中。在application.properties中指定使用哪一个文件1、application-dev.properties(dev环境下... 查看详情

springboot学习篇(-)

1、多环境配置 spring.profiles.active=local激活使用哪个环境配置  2、java-jarxx.jar--spring.profiles.active=test  查看详情

吊炸天,springboot的多环境配置一下搞明白了!

1、使用springboot的profile命名规则profile用于多环境的激活和配置,用来切换生产,测试,本地等多套不通环境的配置。如果每次去更改配置就非常麻烦,profile就是用来切换多环境配置的。在SpringBoot框架中,使... 查看详情

springboot2——指标监控actuator多环境切换profile和自定义starter(代码片段)

SpringBoot2——指标监控actuator、多环境切换Profile和自定义starter一、SpringBootActuator1.1SpringBootActuator的使用1.2Endpoints1.2.1端点暴露配置1.2.2重要端点解析二、多环境切换Profile2.1多配置文件2.2yaml的多文档块2.3配置文件的加载顺序三、自... 查看详情

springboot配置之profile多环境支持

Profile是spring对不同环境提供不同配置功能的支持,可以通过激活、指定参数等方式快速切换环境。多profile文件格式:-格式:appilication-[profile].properties application-dev.properties、appilication-prod.properties多profile文档块模式激活方式-... 查看详情