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 多环境打包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java thrift服务器和客户端创建实例代码

    Java thrift服务器和客户端创建实例代码

    Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。接下来通过本文给大家介绍Java thrift服务器和客户端创建实例代码,需要的朋友参考下吧
    2017-04-04
  • Java多线程中Callable和Future的解读

    Java多线程中Callable和Future的解读

    这篇文章主要介绍了Java多线程中Callable和Future的解读,Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,需要的朋友可以参考下
    2023-09-09
  • SpringBoot参数校验与国际化使用教程

    SpringBoot参数校验与国际化使用教程

    这篇文章主要给大家介绍了关于SpringBoot参数校验与国际化使用教程的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • java pdf加水印的方法

    java pdf加水印的方法

    这篇文章主要为大家详细介绍了java pdf加水印的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Java 基础之事务详细介绍

    Java 基础之事务详细介绍

    这篇文章主要介绍了Java 基础之事务详细介绍的相关资料,需要的朋友可以参考下
    2017-03-03
  • Spring中@Autowired自动注入map详解

    Spring中@Autowired自动注入map详解

    这篇文章主要介绍了Spring中@Autowired自动注入map详解,  spring是支持基于接口实现类的直接注入的,支持注入map,list等集合中,不用做其他的配置,直接注入,需要的朋友可以参考下
    2023-10-10
  • SpringBoot热部署设置方法详解

    SpringBoot热部署设置方法详解

    在实际开发中,每次修改代码就需要重启项目,重新部署,对于一个后端开发者来说,重启确实很难受。在java开发领域,热部署一直是一个难以解决的问题,目前java虚拟机只能实现方法体的热部署,对于整个类的结构修改,仍然需要重启项目
    2022-10-10
  • 详解Java Spring AOP

    详解Java Spring AOP

    这篇文章主要为大家介绍了Java Spring AOP,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • Mybatis结果集映射与生命周期详细介绍

    Mybatis结果集映射与生命周期详细介绍

    结果集映射指的是将数据表中的字段与实体类中的属性关联起来,这样 MyBatis 就可以根据查询到的数据来填充实体对象的属性,帮助我们完成赋值操作
    2022-10-10
  • springMVC中@RequestParam和@RequestPart的区别

    springMVC中@RequestParam和@RequestPart的区别

    本文主要介绍了springMVC中@RequestParam和@RequestPart的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06

最新评论