Spring Boot 如何使用 Maven 实现多环境配置管理

Spring Boot 如何使用 Maven 实现多环境配置管理

实现多环境配置有以下几个重要原因:

  • 适应不同的部署环境:在实际部署应用程序时,通常会有多个不同的部署环境,如开发环境、测试环境、生产环境等。每个环境可能需要不同的配置,例如数据库连接信息、日志级别、缓存配置等。通过实现多环境配置,可以方便地适应不同的部署环境,而无需手动修改配置文件。

  • 提高灵活性和可维护性:通过将不同环境的配置分离开来,可以提高系统的灵活性和可维护性。开发人员可以专注于当前环境的配置,而不必担心影响其他环境的配置。同时,当需要修改某个环境的配置时,也可以更加方便地进行管理和维护。

  • 降低人为错误的风险:手动修改配置文件很容易引入人为错误,特别是在频繁切换环境或部署时。通过实现多环境配置,可以减少手动操作的风险,提高系统的稳定性和可靠性。

  • 支持持续集成和持续部署:在持续集成和持续部署的过程中,需要自动化地构建和部署应用程序到不同的环境。多环境配置可以帮助自动化流程更加顺利地进行,从而提高开发和部署的效率。

项目目录结构:

POM 配置

在pom.xml文件中,使用maven-profile和maven-resources-plugin插件来实现多环境配置管理。在插件配置中,可以指定不同的配置文件,根据不同的环境打包不同的配置文件。

java 复制代码
<profiles>
   <!-- 本地开发 -->
    <profile>
        <id>dev</id>
        <properties>
            <env>dev</env>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <!-- 测试 -->
    <profile>
        <id>test</id>
        <properties>
            <env>test</env>
        </properties>
    </profile>
    <!-- 生产 -->
    <profile>
        <id>prod</id>
        <properties>
            <env>prod</env>
        </properties>
    </profile>
</profiles>

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
        <resource>
            <directory>src/main/resources-env/${env}</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

src/main/resources 配置文件

application.yml

java 复制代码
spring:
  #  Spring Boot 2.4为了提升对Kubernetes的支持 将 spring.profiles 作废了
  #  profiles:
  #    active: config,config1,config2,config3
  # 替换上面作废的spring.profiels.actice配置参数
  config:
    import: application-config.yml,application-config1.yml,application-config2.yml,application-config3.yml

application-config.yml

java 复制代码
biz:
  total: application

src/main/resources-env/ 多环境配置文件

本地开发

dev/application-config1.yml

java 复制代码
biz:
  env: dev-environment
  profile: dev-profile

生产

prod/application-config1.yml

java 复制代码
biz:
  env: prod-environment
  profile: prod-profile

测试

test/application-config1.yml

java 复制代码
biz:
  env: test-environment
  profile: test-profile

编写测试代码

PropertiesApplication 启动类

java 复制代码
@SpringBootApplication
public class PropertiesApplication {

    public PropertiesApplication(Environment environment) {
        String total = environment.getProperty("biz.total");
        String env = environment.getProperty("biz.env");
        String profile = environment.getProperty("biz.profile");

        System.out.println("total = " + total + ", env = " + env + ", profile = " + profile);
    }

    public static void main(String[] args) {
        SpringApplication.run(PropertiesApplication.class, args);
    }
}

环境测试

dev环境

java 复制代码
 <profile>
    <id>dev</id>
    <properties>
        <env>dev</env>
    </properties>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>

打印信息:total = application, env = dev-environment, profile = dev-profile

test环境

java 复制代码
 <profile>
    <id>test</id>
    <properties>
        <env>test</env>
    </properties>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>

打印信息:total = application, env = test-environment, profile = test-profile

相关推荐
Java成神之路-14 小时前
Spring IOC 注解进阶:@Bean 管理第三方 Bean,@Import 拆分配置,@Value 注入资源(Spring系列5)
java·后端·spring
zhenxin012214 小时前
Spring Data 什么是Spring Data 理解
java·后端·spring
dgvri14 小时前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
青柠代码录14 小时前
【SpringBoot】集成 Swagger
后端
1104.北光c°14 小时前
【重写优化 新增绘图】布谷鸟过滤器:布隆过滤器的更优缓存穿透解?
java·开发语言·后端·缓存·缓存穿透·布隆过滤器·布谷鸟过滤器
m0_6948455715 小时前
RevelGo搭建教程:类Rails开发体验的Go Web框架
服务器·开发语言·后端·docker·golang·开源·github
云泽野15 小时前
SpringBoot整合QQ邮箱发送邮件及微服务公共模块封装实战
java·spring boot·微服务
希望永不加班16 小时前
SpringBoot 整合 Redis 缓存
spring boot·redis·后端·缓存·wpf
二月夜16 小时前
修改 JAR 文件并重新打包的完整指南
java·spring boot·jar
cch891816 小时前
易语言VS Go语言:编程语言大对决
开发语言·后端·golang