美文网首页
SpringBoot profiles.active 的配置

SpringBoot profiles.active 的配置

作者: lclandld | 来源:发表于2020-03-04 10:58 被阅读0次

往往在一个项目中会有开发环境、测试环境、演示环境、线上环境,那么各个环境的数据库配置、端口设置、redis配置、以及一些其他的配置该如何区分呢,profiles.active解决这个问题

一、正常项目的环境结构

在resources下能看到我配置了四个环境的环境变量

  • application.properties(通用的都放在这里面)
    单独需要重新配置的就按照各个环境放到对应环境里面
  • application-dev.properties(开发环境)
  • application-test.properties(测试环境)
  • application-demo.properties(演示环境)
  • application-prd.properties(线上环境)
image.png

二、具体的步骤

1、pom.xml

注意 :

  • <activeByDefault>true</activeByDefault>配置了这个的就表示默认的环境是这个
  • 这个放到<project> </project>大标签下即可
 <profiles>
        <!--开发环境-->
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <profileActive>dev</profileActive>
            </properties>

        </profile>
        <!--测试环境-->
        <profile>
            <id>test</id>
            <properties>
                <profileActive>test</profileActive>
            </properties>
        </profile>
        <!--演示环境-->
        <profile>
            <id>demo</id>
            <properties>
                <profileActive>demo</profileActive>
            </properties>
        </profile>
        <!--线上环境-->
        <profile>
            <id>prd</id>
            <properties>
                <profileActive>prd</profileActive>
            </properties>
        </profile>
    </profiles>

在pom.xml中加入了这个之后,就能在Maven中看到Profiles,以后各个环境的切换就在此进行了


image.png
2、在Resources下新建对应的几个配置文件,并加上内容
image.png
  • application.properties
server.port= 9999

spring.profiles.active=@profileActive@
  • application-dev.properties(开发环境)
server.port= 9991
  • application-test.properties(测试环境)
server.port= 9992
  • application-demo.properties(演示环境)
server.port= 9993
  • application-prd.properties(线上环境)
server.port= 9994
注意:
  • 1) 在application.properties中加入的spring.profiles.active=@profileActive@
    @@中间的名字一定要是pom.xml文件中配置的

    image.png
  • 2)检查@profileActive@属性是否起作用:按住ctrl,再点击这个属性,能定位到相应的值的位置则起作用,否则没起作用

3、 profile对资源的操作

这个一定是放到<build> </build>标签下的哈

        <!-- profile对资源的操作 -->
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>application*.properties</exclude>
                </excludes>
            </resource>

            <resource>
                <directory>src/main/resources</directory>
                <!-- 是否替换@xx@表示的maven properties属性值 -->
                <filtering>true</filtering>
                <includes>
                    <include>application.properties</include>
                    <include>application-${profileActive}.properties</include>
                </includes>
            </resource>
        </resources>
4、换着环境运行
  • dev(开发环境)


    image.png
  • test(测试环境)


    image.png

-demo(演示环境)


image.png

-prd(线上环境)

image.png

我们可以看到在application.properties中的9999端口根本没出现,这就是优先级的问题了

相关文章

网友评论

      本文标题:SpringBoot profiles.active 的配置

      本文链接:https://www.haomeiwen.com/subject/dohvkhtx.html