springboot多环境配置及配置文件分类

格格巫MMQ!! 格格巫MMQ!!     2022-10-23     641

关键词:

一、多环境配置
在工作中,对于开发环境、测试环境、生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装 mysql ,连接自己电脑上的 mysql 即可,但是项目开发完毕后要上线就需要该配置,将环境的配置改为线上环境的。

来回的修改配置会很麻烦,而 SpringBoot 给开发者提供了多环境的快捷配置,需要切换环境时只需要改一个配置即可。不同类型的配置文件多环境开发的配置都不相同,接下来对不同类型的配置文件进行说明

1.1 yaml文件
在 application.yml 中使用 — 来分割不同的配置,内容如下

#开发
spring:
profiles: dev #给开发环境起的名字
server:
port: 80

#生产
spring:
profiles: pro #给生产环境起的名字
server:
port: 81

#测试
spring:
profiles: test #给测试环境起的名字
server:
port: 82

上面配置中 spring.profiles 是用来给不同的配置起名字的。而如何告知 SpringBoot 使用哪段配置呢?可以使用如下配置来启用都一段配置

#设置启用的环境
spring:
profiles:
active: dev #表示使用的是开发环境的配置
综上所述,application.yml 配置文件内容如下

#设置启用的环境
spring:
profiles:
active: dev

#开发
spring:
profiles: dev
server:
port: 80

#生产
spring:
profiles: pro
server:
port: 81

#测试
spring:
profiles: test
server:
port: 82

注意:在上面配置中给不同配置起名字的 spring.profiles 配置项已经过时。最新用来起名字的配置项是

#开发
spring:
config:
activate:
on-profile: dev
1.2 properties文件
properties 类型的配置文件配置多环境需要定义不同的配置文件

application-dev.properties 文件是开发环境的配置文件。我们在该文件中配置端口号为 80

server.port=80
application-test.properties 文件是测试环境的配置文件。我们在该文件中配置端口号为 81

server.port=81
application-pro.properties 文件是生产环境的配置文件。我们在该文件中配置端口号为 82

server.port=82
SpringBoot 只会默认加载名为 application.properties 的配置文件,所以需要在 application.properties 配置文件中设置启用哪个配置文件,配置如下:

spring.profiles.active=pro
1.3 命令行启动参数设置
使用 SpringBoot 开发的程序以后都是打成 jar 包,通过 java -jar xxx.jar 的方式启动服务的。那么就存在一个问题,如何切换环境呢?因为配置文件打到的jar包中了。

我们知道 jar 包其实就是一个压缩包,可以解压缩,然后修改配置,最后再打成jar包就可以了。这种方式显然有点麻烦,而 SpringBoot 提供了在运行 jar 时设置开启指定的环境的方式,如下

java –jar xxx.jar –-spring.profiles.active=test
那么这种方式能不能临时修改端口号呢?也是可以的,可以通过如下方式

java –jar xxx.jar –-server.port=88
当然也可以同时设置多个配置,比如即指定启用哪个环境配置,又临时指定端口,如下

java –jar springboot.jar –-server.port=88 –-spring.profiles.active=test
大家进行测试后就会发现命令行设置的端口号优先级高(也就是使用的是命令行设置的端口号),配置的优先级其实 SpringBoot 官网已经进行了说明,参见 :

https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config
进入上面网站后会看到如下页面

如果使用了多种方式配合同一个配置项,优先级高的生效。

二、配置文件分类
有这样的场景,我们开发完毕后需要测试人员进行测试,由于测试环境和开发环境的很多配置都不相同,所以测试人员在运行我们的工程时需要临时修改很多配置,如下

java –jar springboot.jar –-spring.profiles.active=test --server.port=85 --server.servlet.context-path=/heima --server.tomcat.connection-timeout=-1 …… …… …… …… ……
针对这种情况,SpringBoot 定义了配置文件不同的放置的位置;而放在不同位置的优先级时不同的。

SpringBoot 中4级配置文件放置位置:

1级:resources/application.yml

2级:resources/config/application.yml

3级:target/application.yml

4级:target/config/application.yml

说明:级别越高优先级越高

3级与4级留作系统打包后设置通用属性

1级与2级用于系统开发阶段设置通用属性

2.1 代码演示
2.1.1 环境准备
创建一个名为 springboot_06_config_file 的 SpringBoot 工程,,参考Java开发学习(三十五)----SpringBoot快速入门及起步依赖解析,目录结构如下

在 resources 下创建一个名为 config 的目录,在该目录中创建 application.yml 配置文件,而在该配置文件中将端口号设置为 81,内容如下

server:
port: 81
而在 resources 下创建的 application.yml 配置文件中并将端口号设置为 80,内容如下

server:
port: 80
2.1.2 验证1级和2级的优先级
运行启动引导类,可以在控制台看到如下日志信息

通过这个结果可以得出类路径下的 config 下的配置文件优先于类路径下的配置文件。

2.1.3 验证2级和4级的优先级
要验证4级,按照以下步骤完成

将工程打成 jar 包

点击工程的 package 来打 jar 包

在硬盘上找到 jar 包所在位置

在 jar 包所在位置创建 config 文件夹,在该文件夹下创建 application.yml 配置文件,而在该配合文件中将端口号设置为 82

在命令行使用以下命令运行程序

java -jar springboot_06_config_file-0.0.1-SNAPSHOT.jar
运行后日志信息如下

通过这个结果可以得出file: config 下的配置文件优先于类路径下的配置文件。

注意:

SpringBoot 2.5.0版本存在一个bug,我们在使用这个版本时,需要在 jar 所在位置的 config 目录下创建一个任意名称的文件夹

springboot项目application.properties多环境配置文件jar包外部配置文件

一、简介springboot项目application.properties文件存放及使用介绍 二、方法一多环境配置文件我们一般都会有多个应用环境,开发环境、测试环境、生产环境,各个环境的配置会略有不同,我可以根据这个创建多份配置文件,由主... 查看详情

springboot配置文件-多环境配置

一. 多环境配置的好处:1.不同环境配置可以配置不同的参数~2.便于部署,提高效率,减少出错~二. properties多环境配置1.配置激活选项spring.profiles.active=dev2.添加其他配置文件application.properties:#激活哪一个环境的配置文件spr... 查看详情

springboot:配置文件-多环境配置

一、多环境配置的好处1.不同环境配置可以配置不同的参数2.便于部署,提高效率,减少出错二、Properties多环境配置1.配置激活选项spring.profiles.active=dev说明:这里激活的是开发环境。2.添加其他配置文件如: 开发环境:applica... 查看详情

详解springboot配置文件之多环境配置

一.多环境配置的好处:1.不同环境配置可以配置不同的参数~2.便于部署,提高效率,减少出错~二.properties多环境配置1.配置激活选项spring.profiles.active=dev2.添加其他配置文件application.properties:#激活哪一个环境的配置文件spring.profiles... 查看详情

springboot基础多环境配置

对于多环境的配置,各种项目构建工具的思路基本上一致,都是通过配置多份不同环境的配置文件来区分。 1.首先我们先创建不同环境下的属性文件,截图如下:application.properties 是基础属性配置文件application-develop.propert... 查看详情

springboot多环境下配置文件

最近研究了一下springboot下不同环境(测试环境、生产环境)下不同配置文件的加载方式,本文是通过修改pom文件中的参数进行配置,具体方法如下:1、首先要建立三个配置文件:application.yml、application-dev.yml、application-prop.yml,... 查看详情

springboot多环境下多个配置文件规范配置方案

参考技术A遇到的问题:1、单个配置文件过大、多人协同困难2、每一个环境又要部署给不同的租户解决方案:1、所有环境都一致且不会修改的配置放在application.yml里2、每个环境创建该环境的配置文件夹,该环境下用到的配置都... 查看详情

springboot-多环境配置

...手动更改运行环境配置,会显得非常繁琐与低效。因此,SpringBoot提供了一套机制可以很容易地让我们进行多环境配置。假设现在我们需要往返于两个运行环境:开发环境dev和测试环境test。SpringBoot提供了一套多环境配置机制,称... 查看详情

配置文件+多环境配置+自定义属性

二、SpringBoot配置文件1、配置文件的路径及优先级<1>、配置文件的路径SpringBoot 使用了一个全局的配置文件application.properties,该配置文件可以放置在以下几个位置:根目录下项目根目录中config目录下项目的resources目录下... 查看详情

springboot(代码片段)

文章目录学习目标一、SpringBoot简介1.入门案例问题导入1.1入门案例开发步骤1.2基于SpringBoot官网创建项目1.3SpringBoot项目快速启动2.SpringBoot概述问题导入2.1起步依赖2.2辅助功能二、基础配置1.配置文件格式问题导入1.0初始环境1.1修... 查看详情

springboot-使用yml文件配置多环境

两种配置方式1:在一个yml文件中,2:在多个yml文件中1一个yml文件application.ymlspring: profiles:  active:dev---#开发环境配置spring: profiles:devserver: port:1000---#测试环境配置spring: profiles:stgserver:  查看详情

springboot的多环境配置(代码片段)

1、可以在resources中定义多个配置文件:application-dev.properties、application-prod.properties,然后在主配置文件中(application.properties)中激活哪个配置文件#激活开发环境spring.profiles.active=dev2、可以使用yml配置的多环境文档块(方便)server:p... 查看详情

吊炸天,springboot的多环境配置一下搞明白了!

1、使用springboot的profile命名规则profile用于多环境的激活和配置,用来切换生产,测试,本地等多套不通环境的配置。如果每次去更改配置就非常麻烦,profile就是用来切换多环境配置的。在SpringBoot框架中,使... 查看详情

springboot多环境(devtestprod)配置

propertiest配置格式在SpringBoot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:application-dev.properties:开发环境application-test.properties:测试环境application-prod.properties:生产环境至... 查看详情

springboot2:运维实用篇(黑马程序员p54~p66)

...件书写格式6、多环境开发(properties版)7、Maven与SpringBoot多环境配置8、日志9、日志痛点解决10、日志输出格式控制11、文件记录日志 查看详情

springboot2:运维实用篇(黑马程序员p54~p66)

...件书写格式6、多环境开发(properties版)7、Maven与SpringBoot多环境配置8、日志9、日志痛点解决10、日志输出格式控制11、文件记录日志 查看详情

springboot--配置:多环境配置profile(代码片段)

01:SpringBoot–配置(yaml/properties)语法02:SpringBoot–配置(yaml/properties)语法获取配置文件信息、SpringBootConfigurationAnnotation…03:SpringBoot–配置:多环境配置ProfileSp 查看详情

springboot2:运维实用篇(黑马程序员p54~p66)

...件书写格式6、多环境开发(properties版)7、Maven与SpringBoot多环境配置8、日志9、日志痛点解决10、日志输出格式 查看详情