Springboot 多环境配置

背景

在一个项目的开发过程中,通常伴随着多套环境:
本地环境 local、开发环境 dev、集成测试环境 test、用户接受测试环境 uat、预生产环境 pre、生产环境 prod。
真实的企业开发中,不会只开发一个独立的服务,而是多个微服务。面对多套环境,通常是”一套代码 + 配置中心“的方式,将代码编译打包后,在启动服务时或服务运行过程中,从配置中心读取配置,保证各个环境代码完全一致,仅配置不同。

配置文件

1.优先级

  • 同一目录下:
    properties > yaml > yml
    如果放到 config目录下(如: src/main/resources/config/application.yml),config目录下的核心配置文件优先级会更高。
  • bootstrap.yml文件在纯粹的 Spring Boot 应用中不会生效,它只有在 Spring Cloud 下才会生效,在 Spring Cloud 中,应用会直接或间接依赖 spring-cloud-context,此时才会读取 bootstrap.yml 文件和 application.yml 文件,这种情况下 bootstrap.yml 优先级高于其他核心配置文件。

2.多环境两种配置方式

2.1 通过spring.profiles.active

spring:
  profiles:
    active: local

上面的配置指定了环境为 local,会加载 application-local.yml 文件。

在打包后,也可以在运行 jar 包时指定生效的环境

java -jar hero-springboot-demo.jar --spring.profiles.active=test

2.2 通过 Maven

application.yml 中 spring.profiles.active 配置一个占位符,在 Maven 打包时,通过具体的 profile,替换 application.yml 中的占位符。
具体实现如下:

  1. application.yml 中使用占位符
spring:
  profiles:
    active: @env@
  1. pom.xml 中配置多环境
    首先配置 profile:
<profiles>
    <profile>
        <id>local</id>
        <properties>
            <env>local</env>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>dev</id>
        <properties>
            <env>dev</env>
        </properties>
    </profile>
    <profile>
        <id>test</id>
        <properties>
            <env>test</env>
        </properties>
    </profile>
</profiles>

上面配置了三套 profileenv的值分别定义为 localdevtest,且 local 为默认激活。 接着在 中添加资源的处理:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>application-*.yml</exclude>
            </excludes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <includes>
                <include>application.yml</include>
                <include>application-${env}*.yml</include>
            </includes>
        </resource>
    </resources>
    <plugins>
       ...
    </plugins>
</build>

filtering设置为 true,表示利用占位符进行替换。上面的配置先排除 application- 开头的资源文件,然后在根据生效的profile 对应的 env的值,打包对应的 application-xxx.yml 文件。

通过maven配置的测试打包

两种方式:使用命令行 、 直接用IDEA。

  • 命令行:
mvn clean package -Pdev   	## -P后面就是对应的环境。
  • IDEA
    在这里插入图片描述

两种方式打包后都会在 target 目录下生成 hero-springboot-demo.jar,可以在命令行中启动。

原文链接:https://blog.csdn.net/youyacoder/article/details/126305576

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot中,可以使用多个配置文件来实现多环境的配置。首先,需要创建多个配置文件,例如application-dev.yml(开发环境)、application-prod.yml(生产环境)、application-test.yml(测试环境)。 然后,可以通过指定启动参数来选择使用不同的配置文件。比如,在测试环境中可以使用以下命令启动应用程序:java -jar 项目.jar --spring.profiles.active=test。在生产环境中可以使用以下命令启动应用程序:java -jar 项目.jar --spring.profiles.active=prod。这种方式可以灵活地选择使用不同的配置文件。 另一种方式是在pom.xml文件中指定环境配置。具体来说,可以在application.yml中选择需要使用的配置文件。可以通过在application.yml文件中的spring.profiles.active属性来指定需要使用的配置文件的后缀。例如,如果要使用开发环境的配置,可以将spring.profiles.active设置为dev。 无论使用哪种方式,都需要在配置文件中指定相应环境下的配置内容。例如,在dev配置文件中可以设置数据库的URL、用户名、密码以及服务器端口。类似地,在test和prod配置文件中也可以设置相应环境的配置。 总之,通过创建多个配置文件,并通过指定启动参数或在配置文件中指定需要使用的配置,可以实现Spring Boot的多环境配置。这样可以在不同的环境中灵活地配置应用程序所需的参数,避免重复配置的情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值