首页 > 其他分享 >SpringBoot多环境配置

SpringBoot多环境配置

时间:2024-04-01 09:02:43浏览次数:14  
标签:SpringBoot Spring 配置 环境 yml application properties

写在前面

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

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

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 配置如下

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

2.2YAML

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

    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

server:
 port: 8080
 tomcat:
  uri-encoding: UTF-8
environment:
 name: 开发环境

application-dev.properties

server.port=8080
server.tomcat.uri-encoding=UTF-8
environment.name=开发环境

②配置生产环境

application-prod.yml

server:
 port: 8090
 tomcat:
  uri-encoding: UTF-8
environment:
 name: 生产环境

application-prod.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

# application.yml
spring
 profiles:
  active: dev

application.properties

spring.profiles.active=dev

4.2 启动参数激活

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

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

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

4.3 环境变量激活

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

五、测试是否生效

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

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

image-20240329232015193

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

标签:SpringBoot,Spring,配置,环境,yml,application,properties
From: https://www.cnblogs.com/xiezhr/p/18107687

相关文章

  • C# NLog 自用配置
    打印到控制台日志保存到NLog目录下每天保存一个文件夹按类名保存日志文件日志内容标注日志等级代码中配置方式varconfig=newNLog.Config.LoggingConfiguration();//定义文件日志目标vartimeLevelClassFileTarget=newNLog.Targets.Fi......
  • Windows和Linux系统下的Conda环境迁移
    Motivation​ 大家在学习Python的过程中,可能经常会遇到下面两种情况:同一份代码,别人配置conda环境可以跑通,但你配置了N天,还不知道哪一步出现了差错,仍然跑不通代码,conda环境卸载了又重新下,出现了死循环......你可能先在一台服务器上跑通了代码,为了提高效率,你又想在其它服务器上......
  • Python 环境搭建
    一、Windows环境搭建*下载Python解释器IDLEhttps://www.python.org/downloads/python-3.12.0b3在线安装32位python的解释器程序,即边下载边安装python-3.12.0b1-amd64在线安装64位python的解释器程序,即边下载边安装python-3.12.0b2-arm64ARM架构的64......
  • MDK中如何使用STM32CubeMX来配置工程和生成初始化代码?
    在MDK中使用STM32CubeMX配置工程和生成初始化代码是一个高效的开发流程,它可以显著提高开发效率并减少手动配置错误。以下是详细的步骤和示例代码,展示如何使用STM32CubeMX来配置工程,并将其与MDK结合使用。1.安装STM32CubeMX首先,访问STMicroelectronics的官方网站,下载并安......
  • Redission分布式锁介绍和配置引入
        本人在实际项目用于确保Key一致性经常使用的一种加锁方式,帮助分布式环境中互斥访问。很多人问不用锁不是一样完成目标吗?但需要清楚的是这是在高并发的场景下,多节点同时访问缓存的场景,是一般单体项目所无法比拟的,使用锁方式可以控制并发访问,避免缓存击穿和雪崩等问......
  • 虚拟机环境的搭建及Red Hot系统安装
     VMware虚拟机的安装准备好VMware安装包并下载虚拟机设置注:位置需自定义一个目录并保证所在磁盘空间足够大RedHat系统安装选择提前下载好的rhel系统镜像调出鼠标快捷键:ctrl+alt小键盘上下键移动光标按enter回车键取消启用kdump设置root账户......
  • Springboot + redis分布式锁
    1.引入redis和redisson<!--redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!......
  • 基于springboot的企业高校财务管理系统
    jdk版本:1.8及以上ide工具:IDEA或者eclipse数据库:mysql 编程语言:java框架:SSM/springboot都有maven:3.6.1前端:layui+bootstrap+jsp本文首先实现了高校财务处理系统的发展随后依照传统的软件开发流程,最先为系统挑选适用的言语和软件开发平台,依据需求分析开展控制模块......
  • 游戏开发:生产环境部署维护工具链
    开发环境(develop):业务开发环境中控机器(console):管理控制整个线上生产环境机器群业务机器(produce):承载生产业务进程数据库机器(database):存盘服务进程阿里云对象存储服务OSS(https://www.alibabacloud.com/help/zh/oss)SaltStack(https://github.com/saltstack/salt)中控机器作为主控......
  • 基于springboot实现房产销售系统项目【项目源码+论文说明】计算机毕业设计
    基于springboot实现房产销售系统演示摘要随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于房产销售系统当然也不能排除在外,随着网络技术的不断成熟,带动了房产销售系统,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还......