一文掌握SpringBoot多环境配置

 更新时间:2024年04月01日 09:16:19   作者:xiezhr  
在实际项目的开发过程中,我们程序往往需要在不同环境中运行,每个环境中的配置参数可能都会有所不同,例如数据库连接信息、文件服务器等等,下面小编给大家介绍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 配置如下

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 开发环境

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

相关文章

  • Spring Boot自动配置源码实例解析

    Spring Boot自动配置源码实例解析

    Spring Boot作为Java领域最为流行的快速开发框架之一,其核心特性之一就是其强大的自动配置机制,下面这篇文章主要给大家介绍了关于Spring Boot自动配置源码的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • 启用springboot security后登录web页面需要用户名和密码的解决方法

    启用springboot security后登录web页面需要用户名和密码的解决方法

    这篇文章主要介绍了启用springboot security后登录web页面需要用户名和密码的解决方法,也就是使用默认用户和密码登录的操作方法,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • Java查看和修改线程优先级操作详解

    Java查看和修改线程优先级操作详解

    JAVA中每个线程都有优化级属性,默认情况下,新建的线程和创建该线程的线程优先级是一样的。本文将为大家详解Java查看和修改线程优先级操作的方法,需要的可以参考一下
    2022-08-08
  • 通过AOP拦截Spring Boot日志并将其存入数据库功能实现

    通过AOP拦截Spring Boot日志并将其存入数据库功能实现

    本文介绍了如何使用Spring Boot和AOP技术实现拦截系统日志并保存到数据库中的功能,包括配置数据库连接、定义日志实体类、定义日志拦截器、使用AOP拦截日志并保存到数据库中等步骤,感兴趣的朋友一起看看吧
    2023-08-08
  • Java BeanUtils 类作用、语法与示例详解

    Java BeanUtils 类作用、语法与示例详解

    BeanUtils是Apache Commons和Spring Framework提供的工具类,主要用于简化JavaBean的操作,接下来通过本文给大家介绍Java BeanUtils 类作用、语法与示例详解,感兴趣的朋友跟随小编一起看看吧
    2025-08-08
  • SpringBoot + 微信公众号JSAPI支付功能的实现

    SpringBoot + 微信公众号JSAPI支付功能的实现

    这篇文章主要介绍了SpringBoot + 微信公众号JSAPI支付功能的实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Java ArrayList.toArray(T[]) 方法的参数类型是 T 而不是 E的原因分析

    Java ArrayList.toArray(T[]) 方法的参数类型是 T 而不是 E的原因分析

    这篇文章主要介绍了Java ArrayList.toArray(T[]) 方法的参数类型是 T 而不是 E的原因分析的相关资料,需要的朋友可以参考下
    2016-04-04
  • Java接口名称冲突问题的讲解

    Java接口名称冲突问题的讲解

    今天小编就为大家分享一篇关于Java接口名称冲突问题的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • SpringBoot防止大量请求攻击的实现

    SpringBoot防止大量请求攻击的实现

    在有些特定的时候需要加上IP访问时间限制,防止一个IP多次访问请求,本文主要介绍了SpringBoot防止大量请求攻击的实现,感兴趣的可以了解一下
    2021-11-11
  • SpringBoot18 redis的配置方法

    SpringBoot18 redis的配置方法

    本文介绍在SpringBoot项目中集成和使用Redis的方法,包括添加依赖、配置文件、自定义序列化方式、使用方式、实际使用示例、常见操作总结以及注意事项,特别强调了配置类的作用,即使用JSON序列化以提高数据的可读性、节省空间和跨语言兼容性,感兴趣的朋友跟随小编一起看看吧
    2025-11-11

最新评论