SpringBoot 配置多环境配置文件

简介: SpringBoot 配置多环境配置文件

一、前言

对于springboot工程,在不同环境(例如devtestprod等)可能有不同的配置信息(配置在application.ymlapplication.properties中),例如swagger.enable这个变量,在dev和test环境值为true,在prod环境的值为false。

在springboot中,有两种方式可以实现多环境配置文件:

  1. 一种是直接在一个配置文件中配置多个环境的配置信息(即多文档块,通过---分割),这种仅支持application.yml文件
  2. 一种是一个主配置文件(application.yml或application.properties)和多个环境配置文件(application-dev.yml,application-test.yml,application-prod.yml等)。

二、单个配置实现多环境配置

配置文件为 application.yml,不同环境相同的配置信息可以配置在顶层文档块,不同环境不同配置信息配置在不同环境文档块中。通过 spring.profiles.active变量可以在不同环境指定使用哪个配置文档块。
# 不同环境相同的配置信息可以配置在这个块
server:
  port: 8088
  servlet:
    context-path: /demo
# 激活指定使用哪个环境配置文件
spring:
  profiles:
    active: prod

---
spring:
  profiles: dev

swagger:
  enable: true


---
spring:
  profiles: test

swagger:
  enable: true


---
spring:
  profiles: prod

swagger:
  enable: false

三、多个配置文件形式

创建一个主配置文件,和不同环境的子配置文件,文件布局如下:

在这里插入图片描述

主配置文件:application.yml

# 不同环境相同的配置信息可以配置在这个文件
server:
  port: 8088
  servlet:
    context-path: /demo

# 激活指定使用哪个环境配置文件
spring:
  profiles:
    active: prod

dev环境:application-dev.yml

swagger:
  enable: true

test环境:application-test.yml

swagger:
  enable: true

prod环境:application-prod.yml

swagger:
  enable: false

四、激活配置文件方式

  1. 通过在主配置文件中(application.yml或application.properties)指定变量spring.profiles.active的值,例如spring.profiles.active=dev
  2. 命令行指定:java -jar springboot-demo.jar --spring.profiles.active=dev
  3. 虚拟机参数指定:-Dspring.profiles.active=dev

五、配置文件加载顺序

springBoot启动会扫描读取以下位置中的配置文件,优先级由高到低:
  1. -file:./config/,即当前项目下的config文件夹(src同级目录)
  2. -file:./,即当前项目下
  3. -classpath:./config/,即当前项目中resources资源文件夹下的config文件夹
  4. -classpath:./,即当前项目中resources资源文件夹下
相关文章
|
3月前
|
Java 开发者 微服务
手写模拟Spring Boot自动配置功能
【11月更文挑战第19天】随着微服务架构的兴起,Spring Boot作为一种快速开发框架,因其简化了Spring应用的初始搭建和开发过程,受到了广大开发者的青睐。自动配置作为Spring Boot的核心特性之一,大大减少了手动配置的工作量,提高了开发效率。
76 0
|
24天前
|
JavaScript Java 程序员
SpringBoot自动配置及自定义Starter
Java程序员依赖Spring框架简化开发,但复杂的配置文件增加了负担。SpringBoot以“约定大于配置”理念简化了这一过程,通过引入各种Starter并加载默认配置,几乎做到开箱即用。
81 10
SpringBoot自动配置及自定义Starter
|
2月前
|
Java Maven Spring
SpringBoot配置跨模块扫描问题解决方案
在分布式项目中,使用Maven进行多模块开发时,某些模块(如xxx-common)没有启动类。如何将这些模块中的类注册为Spring管理的Bean对象?本文通过案例分析,介绍了两种解决方案:常规方案是通过`@SpringBootApplication(scanBasePackages)`指定扫描路径;推荐方案是保持各模块包结构一致(如com.xxx),利用SpringBoot默认扫描规则自动识别其他模块中的组件,简化配置。
SpringBoot配置跨模块扫描问题解决方案
|
2月前
|
NoSQL Java Redis
Spring Boot 自动配置机制:从原理到自定义
Spring Boot 的自动配置机制通过 `spring.factories` 文件和 `@EnableAutoConfiguration` 注解,根据类路径中的依赖和条件注解自动配置所需的 Bean,大大简化了开发过程。本文深入探讨了自动配置的原理、条件化配置、自定义自动配置以及实际应用案例,帮助开发者更好地理解和利用这一强大特性。
119 14
|
3月前
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
108 1
SpringBoot入门(7)- 配置热部署devtools工具
|
3月前
|
存储 前端开发 JavaScript
springboot中路径默认配置与重定向/转发所存在的域对象
Spring Boot 提供了简便的路径默认配置和强大的重定向/转发机制,通过合理使用这些功能,可以实现灵活的请求处理和数据传递。理解并掌握不同域对象的生命周期和使用场景,是构建高效、健壮 Web 应用的关键。通过上述详细介绍和示例,相信读者能够更好地应用这些知识,优化自己的 Spring Boot 应用。
65 3
|
3月前
|
Java 数据库连接 数据库
springboot启动配置文件-bootstrap.yml常用基本配置
以上是一些常用的基本配置项,在实际应用中可能会根据需求有所变化。通过合理配置 `bootstrap.yml`文件,可以确保应用程序在启动阶段加载正确的配置,并顺利启动运行。
436 2
|
8天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue实现的留守儿童爱心网站设计与实现(计算机毕设项目实战+源码+文档)
博主是一位全网粉丝超过100万的CSDN特邀作者、博客专家,专注于Java、Python、PHP等技术领域。提供SpringBoot、Vue、HTML、Uniapp、PHP、Python、NodeJS、爬虫、数据可视化等技术服务,涵盖免费选题、功能设计、开题报告、论文辅导、答辩PPT等。系统采用SpringBoot后端框架和Vue前端框架,确保高效开发与良好用户体验。所有代码由博主亲自开发,并提供全程录音录屏讲解服务,保障学习效果。欢迎点赞、收藏、关注、评论,获取更多精品案例源码。
39 10
|
8天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue实现的家政服务管理平台设计与实现(计算机毕设项目实战+源码+文档)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
28 8
|
8天前
|
JavaScript 搜索推荐 Java
基于SpringBoot+Vue实现的家乡特色推荐系统设计与实现(源码+文档+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
20 8