springBoot 多环境配置

背景

我们在开发项目的过程中,不同的环境中不同的配置肯定是有所区别的,如果这时候切换一下环境在手动改一下肯定是非常麻烦的。

解决

spring boot允许你通过命名约定按照一定的格式(application-{profile}.properties)来定义多个配置文件,然后通过在application.properyies通过spring.profiles.active来具体激活一个或者多个配置文件,如果没有没有指定任何profile的配置文件的话,spring boot默认会启动application-default.properties。
举个例子

   application-dev.properties:开发环境
   application-test.properties:测试环境
   application-prod.properties:生产环境

至于哪个具体的配置文件会被加载,需要在application.properties文件中通过spring.profiles.active属性来设置,其值对应{profile}值。
如:spring.profiles.active=test就会加载application-test.properties配置文件内容

但是这样是写死在配置文件里面的,一般在发布项目时需在命令行下根据指定环境动态改变spring.profiles.active的值,针对这种方式如我们使用的是MAVEN打包工具,可通过如下方式来改变。

spring.profiles.active=@profileActive@

添加POM

   <profiles>
        <profile>
            <id>prod</id>
            <properties>
                <profileActive>prod</profileActive>
            </properties>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <profileActive>local</profileActive>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
         <profile>
    <profiles>

然后再maven中

mvn clean install -Dmaven.test.skip=true -Pprod

总结:参数-Pprod,表明会激活项目下的pom.xml配置的<profiles>标签下id为prod的配置信息,其中默认指向test,因为<activeByDefault>true</activeByDefault>,所以在idea开发环境下只要项目是一个maven工程,开发调试时启动项目则spring boot 的配置文件spring.profiles.active=@profileActive@也能动态识别出默认profile为dev。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容