springboot实现配置多个yml文件

 更新时间:2025年11月21日 09:29:37   作者:码农小C  
文章主要介绍了在Spring Boot项目中实现多环境配置的三种方式:方式一、多YAML文件配置;方式二、单YAML文件配置;方式三、在pom.xml中指定环境配置,每种方式都有其特点和适用场景

掌握方式一就够了,方式二、三可以不看

以下三种方式都可以实现多环境的配置。在application.yml主配置文件中做项目通用的配置,在其他配置文件中做不同环境下的配置,以避免重复配置的情况。

方式一:多个yml文件

步骤一、多个配置文件

application.yml      #主配置文件
application-dev.yml  #开发环境的配置
application-prod.yml #生产环境的配置
application-test.yml #测试环境的配置

步骤二、applicaiton.yml中指定配置

在application.yml中选择需要使用的配置文件(当选择的文件和application.yml文件存在相同的配置时,application.yml中的配置会被覆盖掉)

spring:
 profiles:
   active: dev #需要使用的配置文件的后缀

方式二: 单个yml文件

配置默认的profile为dev,其他环境可以通过指定启动参数来使用不同的profile,比如:

  • 测试环境:java -jar 项目.jar --spring.profiles.active=test
  • 生产环境:java -jar 项目.jar --spring.profiles.active=prod
#激活dev环境配置
spring:
  profiles.active: dev
 
# 开发环境配置
spring:
  profiles: dev
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/dev?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
server:
  port: 8080
 
# 测试环境配置
spring:
  profiles: test
  datasource:
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    username: root
    password: test
    driver-class-name: com.mysql.jdbc.Driver
server:
  port: 88
 
# 生产环境配置
spring:
  profiles: prod
  datasource:
    url: jdbc:mysql://localhost:3306/prod?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    username: root
    password: prod
    driver-class-name: com.mysql.jdbc.Driver
 server:
  port: 99

方式三:在pom.xml中指定环境配置

步骤一、创建多个配置文件

application.yml      #主配置文件
application-dev.yml  #开发环境的配置
application-prod.yml #生产环境的配置
application-test.yml #测试环境的配置

步骤二、在application.yml中添加多环境配置属性

#多环境配置
  profiles:
    active: @profiles.active@

步骤三、在pom.xml中指定使用的配置

true配置为true则激活对应profile的配置。

或如图所示,在maven->profiles下勾选动态激活需要使用的配置

   <profiles>
        <profile>
            <id>dev</id>
            <activation>
                <!--  默认激活-->
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <profiles.active>dev</profiles.active>
            </properties>
        </profile>
 
        <profile>
            <id>prod</id>
            <properties>
                <profiles.active>prod</profiles.active>
            </properties>
        </profile>
 
        <profile>
            <id>test</id>
            <properties>
                <profiles.active>test</profiles.active>
            </properties>
        </profile>
    </profiles>

方式三的闭坑:

避坑:不能识别符号@

在方式三的步骤二中配置的@profiles.active@,启动会报异常,不能识别@符号。解决方法:

在pom.xml中设置filtering为true

   <build>
       <resources>
          <resource>
              <directory>src/main/resources</directory>
              <filtering>true</filtering> 
              <includes>
                  <include>**/*.*</include>
              </includes>
          </resource>
      </resources>
</build>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring Boot 实现 IP 限流的原理、实践与利弊解析

    Spring Boot 实现 IP 限流的原理、实践与利弊解析

    在Spring Boot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍Spring Boot实现IP限流:原理、实践与利弊分析,感兴趣的朋友跟随小编一起看看吧
    2025-06-06
  • Hyperlane 文件分块上传服务端的解决方案

    Hyperlane 文件分块上传服务端的解决方案

    在现代Web应用中,文件上传是一个核心功能,尤其是对于大文件,传统的上传方式常常因网络中断或超时而失败,为了解决这一痛点,我们推出了基于 Hyperlane 的文件分块上传服务端代码,为开发者提供了一个高效、可靠的大文件上传解决方案,感兴趣的朋友一起看看吧
    2025-04-04
  • 详解使用Spring的BeanPostProcessor优雅的实现工厂模式

    详解使用Spring的BeanPostProcessor优雅的实现工厂模式

    这篇文章主要介绍了详解使用Spring的BeanPostProcessor优雅的实现工厂模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Java中LinkedHashSet的实现原理详解

    Java中LinkedHashSet的实现原理详解

    这篇文章主要介绍了Java中LinkedHasSet的实现原理详解,LinkedHashSet 是具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现,此实现与HashSet 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表,需要的朋友可以参考下
    2023-09-09
  • Java基于代理模式解决红酒经销问题详解

    Java基于代理模式解决红酒经销问题详解

    这篇文章主要介绍了Java基于代理模式解决红酒经销问题,详细描述了代理模式的概念、原理并结合实例形式分析了java基于代理模式解决红酒经销问题的相关步骤、实现方法与操作注意事项,需要的朋友可以参考下
    2018-04-04
  • Spring Security权限控制的实现接口

    Spring Security权限控制的实现接口

    这篇文章主要介绍了Spring Security的很多功能,在这些众多功能中,我们知道其核心功能其实就是认证+授权。Spring教程之Spring Security的四种权限控制方式
    2023-03-03
  • SpringBoot配置数据库密码加密的实现

    SpringBoot配置数据库密码加密的实现

    这篇文章主要介绍了SpringBoot配置数据库密码加密的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Java死锁问题详解及示例

    Java死锁问题详解及示例

    本文将讨论Java程序中死锁问题的概念、产生原因以及避免策略。同时,我们还将通过代码示例来进一步阐述这个问题,感兴趣的小伙伴可以跟着小编一起来学习
    2023-04-04
  • Java中List对象集合按对象中某字段进行排序举例

    Java中List对象集合按对象中某字段进行排序举例

    这篇文章主要给大家介绍了关于Java中List对象集合按对象中某字段进行排序的相关资料,我们在日常开发中也经常会用到排序算法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • 多线程_解决Runnable接口无start()方法的情况

    多线程_解决Runnable接口无start()方法的情况

    这篇文章主要介绍了多线程_解决Runnable接口无start()方法的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论