SpringBoot 多环境打包最佳实践记录

 更新时间:2024年11月27日 11:42:47   作者:小小工匠  
SpringBoot通过配置多环境文件和在打包时指定激活的环境,实现多环境打包与部署,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧

Pre

SpringBoot - Spring Boot 中的配置体系Profile全面解读

概述

实际开发中,应用程序通常需要部署到不同的运行环境中,例如 开发环境、测试环境、生产环境等。不同的环境可能需要不同的环境配置,针对这种情况,通常需要对项目进行多环境配置。

在Spring Boot项目中,实现多环境打包主要通过配置不同的环境文件,并在打包或启动时指定需要的环境参数。

Spring Boot 中实现多环境打包

1. 配置多环境文件

Spring Boot默认加载的配置文件是 application.propertiesapplication.yml。为了支持不同环境的配置,我们可以创建多个配置文件,如:

  • application-dev.yml(开发环境)
  • application-test.yml(测试环境)
  • application-prod.yml(生产环境)

在这些配置文件中,可以分别定义适用于每个环境的数据库、缓存等参数。

application-dev.yml):

server:
  port: 8081
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/dev_db
    username: dev_user
    password: dev_password

application-prod.yml):

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/prod_db
    username: prod_user
    password: prod_password

2. 配置激活的环境

application.yml 中设置默认激活的环境:

spring:
  profiles:
    active: dev

这样在开发环境下运行时,Spring Boot会默认加载 application-dev.yml 的配置。

3. 通过命令行参数指定环境

在项目打包成 JAR 文件后,可以通过命令行参数 --spring.profiles.active 指定环境。例如:

java -jar your-application.jar --spring.profiles.active=prod

将会加载 application-prod.yml 中的配置。

4. 在 Maven 中配置多环境打包

当然了,我们也可以在构建工具中配置多环境打包,方便在不同环境中自动指定激活的配置文件。

pom.xml 中配置多环境 profile

<profiles>
        <!-- 开发环境 -->
        <profile>
            <id>dev</id>
            <properties>
                <package.environment>dev</package.environment>
            </properties>
            <activation>
                <!-- 默认激活这个配置 -->
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <!--测试环境-->
        <profile>
            <id>test</id>
            <properties>
                <package.environment>test</package.environment>
            </properties>
        </profile>
        <!--生产环境-->
        <profile>
            <id>prod</id>
            <properties>
                <package.environment>prod</package.environment>
            </properties>
        </profile>
    </profiles>

<profiles>标签下为每个环境定义一个,并设置<id><properties>来指定环境标识和激活条件

添加 resource

添加<resource>标签,并设置<filtering>为true,以便Maven可以替换其中的变量。在<includes>中指定要包含的公共配置文件和特定环境的配置文件。

  <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>application.yml</include>
                    <!--suppress UnresolvedMavenProperty -->
                    <include>application-${package.environment}.yml</include>
<!--                    <include>**/*.xml</include>-->
                </includes>
            </resource>
        </resources>
    </build> 

这里的${package.environment}是一个变量,它将在打包时被替换为具体的环境标识(如dev、test、pre,prod等)

5. 命令打包

# 开发环境
mvn clean package -P dev
# 测试环境
mvn clean package -P test 
# 生产环境
mvn clean package -P prod

触发Maven的打包流程,并根据指定的profile(如dev、test、prod)来包含相应的配置文件

6. 检查多环境打包的效果

假设我们打一个

# 生产环境
mvn clean package -P prod

使用以下方式检查是否成功加载了指定的环境配置:

  • 检查启动日志中的 Active profiles
  • 访问应用程序中不同的环境变量接口(如数据库连接)并验证返回的结果。

小结

通过多环境配置文件与打包时指定的 spring.profiles.active,可以实现Spring Boot项目的多环境打包与部署,确保在开发、测试和生产环境中使用合适的配置。

到此这篇关于SpringBoot 多环境打包最佳实践的文章就介绍到这了,更多相关SpringBoot 多环境打包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Boot 分库分表策略示例展示

    Spring Boot 分库分表策略示例展示

    分库分表是为了应对大规模数据和高并发请求,提高系统的性能和可扩展性,以下是如何在 Spring Boot 中实现分库分表的详细策略,感兴趣的朋友一起看看吧
    2024-08-08
  • 一文搞懂SpringMVC中@InitBinder注解的使用

    一文搞懂SpringMVC中@InitBinder注解的使用

    @InitBinder方法可以注册控制器特定的java.bean.PropertyEditor或Spring Converter和 Formatter组件。本文通过示例为大家详细讲讲@InitBinder注解的使用,需要的可以参考一下
    2022-06-06
  • Mybatis缓存机制详解与实例分析

    Mybatis缓存机制详解与实例分析

    Mybatis的缓存分为一级缓存和二级缓存,一级缓存是SqlSession级别的而二级缓存是mapper级别的,本文详细的介绍了Mybatis缓存机制与实例分析,文中有相关的代码示例供大家参考,需要的朋友可以参考下
    2023-11-11
  • Java定时器Timer使用方法详解

    Java定时器Timer使用方法详解

    这篇文章主要为大家详细介绍了Java定时器Timer的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • OpenFeign设置header的三种方式总结

    OpenFeign设置header的三种方式总结

    在微服务间使用Feign进行远程调用时需要在header中添加信息,下面这篇文章主要给大家介绍了关于OpenFeign设置header的三种方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • SpringBoot+Vue+Flowable模拟实现请假审批流程

    SpringBoot+Vue+Flowable模拟实现请假审批流程

    这篇文章主要为大家详细介绍了如何利用SpringBoot+Vue+Flowable模拟实现一个请假审批流程,文中的示例代码讲解详细,需要的可以参考一下
    2022-08-08
  • 6种方法初始化JAVA中的list集合

    6种方法初始化JAVA中的list集合

    这篇文章主要介绍了6种方法初始化JAVA中的list集合,文中讲解非常详细,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • 关于Lombok @Data注解:简化Java代码的魔法棒

    关于Lombok @Data注解:简化Java代码的魔法棒

    Lombok库通过@Data注解自动生成常见的样板代码如getter、setter、toString等,极大减少代码量,提高开发效率,@Data注解集成了@ToString、@EqualsAndHashCode、@Getter、@Setter、@RequiredArgsConstructor等注解的功能
    2024-10-10
  • Java解析微信获取手机号信息的示例步骤

    Java解析微信获取手机号信息的示例步骤

    在微信中,用户手机号的获取通常是通过微信小程序的getPhoneNumber接口来实现的,下面通过一个基于Java的示例,展示了如何接收并解密从微信小程序传递过来的加密手机号信息,感兴趣的朋友一起看看吧
    2024-06-06
  • java实现MapReduce对文件进行切分的示例代码

    java实现MapReduce对文件进行切分的示例代码

    本文主要介绍了java实现MapReduce对文件进行切分的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01

最新评论