SpringBoot的pom.xml文件中设置多环境配置信息方法详解

 更新时间:2025年05月26日 09:28:38   作者:程序员buddha2080  
这篇文章主要给大家介绍了关于SpringBoot的pom.xml文件中设置多环境配置信息的相关资料,Java项目通过pom.xml管理多中间件和多环境配置,结合application.yml动态替换配置文件,利用Maven切换不同环境配置,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

Java项目开发中会用到多种中间件,比如MySQL、Redis、RocketMQ等,每个项目又存在开发环境、测试环境、验收环境、生产环境等。有种方案是把这些配置信息放到pom.xml文件中,方便Jenkins进行打包,也方便开发。

1. 示例代码结构

2. pom.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.0</version>
    </parent>

    <groupId>vip.buddha</groupId>
    <artifactId>springboot-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <profiles>
        <!-- 开发环境 -->
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <db.url>jdbc:mysql://localhost:3306/dev_db</db.url>
                <db.username>dev_user</db.username>
                <db.password>dev_password</db.password>
            </properties>
        </profile>

        <!-- 生产环境 -->
        <profile>
            <id>prod</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <db.url>jdbc:mysql://localhost:3306/prod_db</db.url>
                <db.username>prod_user</db.username>
                <db.password>prod_password</db.password>
            </properties>
        </profile>
    </profiles>
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <!-- 添加以下配置,明确包含YAML文件 -->
                <includes>
                    <include>**/*.yml</include>
                </includes>
            </resource>
        </resources>

        <plugins>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <delimiters>
                        <delimiter>${}</delimiter> <!-- 使用 ${} 作为占位符 -->
                    </delimiters>
                    <useDefaultDelimiters>false</useDefaultDelimiters> <!-- 禁用默认的 @..@ -->
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

3. application.yml文件

spring:
  datasource:
    url: ${db.url}
    username: ${db.username}
    password: ${db.password}

4. TestController文件

package vip.buddha.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
    @Value("${spring.datasource.url}")
    private String url;

    @Value("${spring.datasource.username}")
    private String username;

    @Value("${spring.datasource.password}")
    private String password;

    @RequestMapping("/test")
    public void test() {
        System.out.println("url:" + url);
        System.out.println("username:" + username);
        System.out.println("password:" + password);
    }
}

5. Main文件

package vip.buddha;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

6. 验证结果

通过上面步骤,启动项目

启动后,target/classes下的application.yml文件内容就被替换过来了。

访问http://localhost:8080/test后,配置信息就在接口控制台按照预期给显示出来。如果想测试另外的一套配置信息,maven这边勾选另外的配置即可。

总结 

到此这篇关于SpringBoot的pom.xml文件中设置多环境配置信息方法的文章就介绍到这了,更多相关SpringBoot pom.xml多环境配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一文搞懂Java创建线程的五种方法

    一文搞懂Java创建线程的五种方法

    本文主要为大家详细介绍一下Java实现线程创建的五种常见方式,文中的示例代码讲解详细,对我们学习有一定的帮助,感兴趣的可以跟随小编学习一下
    2022-06-06
  • java中jar包的生成与使用方式

    java中jar包的生成与使用方式

    这篇文章主要介绍了java中jar包的生成与使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Java设计模式之访问者模式

    Java设计模式之访问者模式

    这篇文章介绍了Java设计模式之访问者模式,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • 通过示例讲解Java有哪些加锁方式

    通过示例讲解Java有哪些加锁方式

    在Java中加锁是一种同步机制,用于控制对共享资源的并发访问,以防止多个线程同时修改数据,从而避免数据不一致和并发问题,这篇文章主要介绍了Java有哪些加锁方式的相关资料,需要的朋友可以参考下
    2025-06-06
  • SpringAOP中的Advisor详解

    SpringAOP中的Advisor详解

    这篇文章主要介绍了SpringAOP中的Advisor详解,平时我们项目中涉及到 AOP,基本上就是声明式配置一下就行了,无论是基于 XML 的配置还是基于 Java 代码的配置,都是简单配置即可使用,今天就来看一下声明式配置的使用,需要的朋友可以参考下
    2023-08-08
  • 完美解决idea创建文件时,文件不分级展示的情况

    完美解决idea创建文件时,文件不分级展示的情况

    这篇文章主要介绍了完美解决idea创建文件时,文件不分级展示的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Java 如何将表格数据导入word文档中

    Java 如何将表格数据导入word文档中

    这篇文章主要介绍了Java将表格数据导入word文档中的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • RabbitMQ下载与安装教程

    RabbitMQ下载与安装教程

    RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件),这篇文章给大家介绍RabbitMQ下载与安装教程,感兴趣的朋友跟随小编一起看看吧
    2024-02-02
  • Java实现解数独的小程序

    Java实现解数独的小程序

    最近在学习Java,然后上个月迷上了九宫格数独,玩了几天,觉得实在有趣,就想着能不能用编程来解决,于是就自己写了个,还真解决了。下面这篇文章就给大家主要介绍了Java实现解数独的小程序,需要的朋友可以参考借鉴。
    2017-01-01
  • Java静态方法和实例方法区别详解

    Java静态方法和实例方法区别详解

    这篇文章主要为大家详细介绍了Java静态方法和实例方法的区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12

最新评论