SpringBoot多环境配置

写在前面

在实际项目的开发过程中,我们程序往往需要在不同环境中运行。例如:开发环境、测试环境和生产环境。

每个环境中的配置参数可能都会有所不同,例如数据库连接信息、文件服务器等等。

Spring Boot 提供了非常方便的方式来管理这些不同环境的配置。

一、Spring Profile 介绍

Spring ProfileSpring 框架用于处理不同环境配置的解决方案。

Profile 可以帮助我们在不改变应用代码的情况下,根据当前环境动态地激活或者切换不同的配置。

Spring Boot 为每个 Profile 提供了一个独立的 application.properties(或 application.yml)配置文件。

默认情况下,Spring Boot 使用的是 application.properties 文件。

当你激活一个特定的 Profile 时,Spring Boot 会查找名为 application-{profile}.properties 的文件,并把其中的属性加载到 Spring Environment 中。

二、Properties与YAML

Spring Boot支持使用PropertiesYAML两种配置方式。

两者功能类似,都能完成Spring Boot的配置,但是Properties的优先级要高于YMAL

2.1 Properties

  • Spring Boot 默认的配置文件格式

  • 以"."为分割的key=value键值对,例如,指定端口为8080 配置如下

    properties 复制代码
    server.port=8080
  • 不支持复杂的数据结构,只支持字符串类型的键值对。因此,它的使用适用于简单的配置场景

2.2YAML

  • 采用树状结构,一目了然

    yaml 复制代码
    server:
     port: 8080
  • 在key后的冒号一定要跟一个空格,如"port: 8080"

  • YAML 格式文件不支持注解@PropertySource导入配置

  • 支持复杂的数据结构,如列表和键值对,因此,YAML 的使用适用于需要表示复杂数据结构的场合

2.3 如何选择

Spring Boot 应用中,你可以根据自己的实际需求,选择使用 YAML 还是 Properties 格式的配置文件。

如果你的配置比较简单,Properties 格式可能会更好些。

如果你的配置比较复杂,或者你希望配置文件更具可读性,那么 YAML 格式可能是更好的选择

三、创建配置文件

3.1 创建配置文件

在实际项目开发中,我们一般有三个环境:开发(dev)、测试(test)、生产(prod)。我们需要建立如下几个配置文件

  • application.yml 或者application.properties 用于存放所有环境通用的配置
  • application-dev.yml或者application-dev.properties 存放开发环境的特殊配置
  • application-test.yml或者application-test.properties 存放测试环境的特殊配置
  • application-prod.yml或者application-prod.properties 存放生产环境的特殊配置

3.2 配置文件内容

①配置开发环境

application-dev.yml

yaml 复制代码
server:
 port: 8080
 tomcat:
  uri-encoding: UTF-8
environment:
 name: 开发环境

application-dev.properties

properties 复制代码
server.port=8080
server.tomcat.uri-encoding=UTF-8
environment.name=开发环境

②配置生产环境

application-prod.yml

yacas 复制代码
server:
 port: 8090
 tomcat:
  uri-encoding: UTF-8
environment:
 name: 生产环境

application-prod.properties

properties 复制代码
server.port=8090
server.tomcat.uri-encoding=UTF-8
environment.name=生产环境

application-test.ymlapplication-test.properties 配置文件类似,由于篇幅原因,这里就不一一例举了

四、激活 Profile

在上一小节中,我们创建了三个配置文件即配置了三种环境,那么我们怎么才能激活对应环境呢

4.1 配置文件激活

其实很多简单,我们只需要在application.yml 或者application.properties 添加如下配置即可,即可激活开发环境

application.yml

yaml 复制代码
# application.yml
spring
 profiles:
  active: dev

application.properties

properties 复制代码
spring.profiles.active=dev

4.2 启动参数激活

在命令行中设置 spring.profiles.active 系统属性。

例如,你可以使用以下命令来启动你的应用,并激活 "prod" 环境:

bash 复制代码
# 企业级项目开发中,针对生产环境,一般通过启动命令再指定激活生产 环境
java -jar $APP_NAME --spring.profiles.active=prod

4.3 环境变量激活

我们还可以通过配置服务器系统环境变量来激活环境,在环境变量中设置SPRING_PROFILES_ACTIVE 即可,不过这种方式不常用,了解即可

五、测试是否生效

上一小节中,我们通过配置激活了开发环境,我们就来实际验证以下是否生效。

出现下图红框表示部分,说明我们激活了dev 开发环境

本期内容就到这了,希望对你有所帮助,我们下期再见 (●'◡'●)

相关推荐
圈圈编码17 分钟前
Spring Task 定时任务
java·前端·spring
俏布斯30 分钟前
算法日常记录
java·算法·leetcode
276695829234 分钟前
美团民宿 mtgsig 小程序 mtgsig1.2 分析
java·python·小程序·美团·mtgsig·mtgsig1.2·美团民宿
爱的叹息35 分钟前
Java 连接 Redis 的驱动(Jedis、Lettuce、Redisson、Spring Data Redis)分类及对比
java·redis·spring
程序猿chen1 小时前
《JVM考古现场(十五):熵火燎原——从量子递归到热寂晶壁的代码涅槃》
java·jvm·git·后端·java-ee·区块链·量子计算
松韬1 小时前
Spring + Redisson:从 0 到 1 搭建高可用分布式缓存系统
java·redis·分布式·spring·缓存
绝顶少年2 小时前
Spring Boot 注解:深度解析与应用场景
java·spring boot·后端
心灵宝贝2 小时前
Tomcat 部署 Jenkins.war 详细教程(含常见问题解决)
java·tomcat·jenkins
天上掉下来个程小白2 小时前
Redis-14.在Java中操作Redis-Spring Data Redis使用方式-操作列表类型的数据
java·redis·spring·springboot·苍穹外卖
ゞ 正在缓冲99%…2 小时前
leetcode22.括号生成
java·算法·leetcode·回溯