SpringBoot的yml多环境配置3种方法

文章目录

SpringBoot的yml多环境配置3种方法

1、多个yml文件

1.1、创建多个配置文件

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

applicaiton.yml中指定配置

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

java 复制代码
spring:
 profiles:
   active: dev #需要使用的配置文件的后缀

2、单个yml文件

java 复制代码
#激活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

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

测试环境:java -jar 项目.jar --spring.profiles.active=test

生产环境:java -jar 项目.jar --spring.profiles.active=prod

3、在pom.xml中指定环境配置

3.1、创建多个配置文件

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

3.2、在application.yml中添加多环境配置属性

java 复制代码
#多环境配置
  profiles:
    active: @profiles.active@

3.3、在pom.xml中指定使用的配置

java 复制代码
   <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>

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

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

3.4、问题:不能识别符号@

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

在pom.xml中设置filtering为true

java 复制代码
     <build>
         <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering> 
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>
        </resources>
  </build>
相关推荐
历程里程碑16 小时前
普通数组----合并区间
java·数据结构·python·算法·leetcode·职场和发展·tornado
程序员泠零澪回家种桔子16 小时前
Spring AI框架全方位详解
java·人工智能·后端·spring·ai·架构
CodeCaptain17 小时前
nacos-2.3.2-OEM与nacos3.1.x的差异分析
java·经验分享·nacos·springcloud
源代码•宸17 小时前
大厂技术岗面试之谈薪资
经验分享·后端·面试·职场和发展·golang·大厂·职级水平的薪资
Anastasiozzzz17 小时前
Java Lambda 揭秘:从匿名内部类到底层原理的深度解析
java·开发语言
骇客野人17 小时前
通过脚本推送Docker镜像
java·docker·容器
韩立学长18 小时前
基于Springboot泉州旅游攻略平台d5h5zz02(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·旅游
铁蛋AI编程实战18 小时前
通义千问 3.5 Turbo GGUF 量化版本地部署教程:4G 显存即可运行,数据永不泄露
java·人工智能·python
晚霞的不甘18 小时前
CANN 编译器深度解析:UB、L1 与 Global Memory 的协同调度机制
java·后端·spring·架构·音视频
SunnyDays101118 小时前
使用 Java 冻结 Excel 行和列:完整指南
java·冻结excel行和列