spring.profiles.active和spring.profiles.include的使用及区别说明

转自:

spring.profiles.active和spring.profiles.include的使用及区别说明

下文笔者讲述spring.profiles.active和spring.profiles.include的区别简介说明,如下所示

我们都知道,在日常开发中,开发|测试|生产环境都拥有不同的配置信息

如:

jdbc地址、ip、端口等

此时为了避免每次都修改全部信息,我们则可以采用以上的属性处理此类异常

spring.profiles.active属性

例:

配置文件,可使用以下方式定义

application-${profile}.properties

开发环境配置文件:application-dev.properties

测试环境配置文件:application-test.properties

生产环境配置文件:application-prod.properties

application.properties配置

则可以根据不同的属性切换到不同的配置文件

spring.profiles.active,属性值为${profile}。

spring.profiles.active=dev:用application-dev.properties

spring.profiles.active=test:启用application-test.properties

spring.profiles.active=prod:启用application-prod.properties

例:

java -jar xx.jar --spring.profiles.active=test
注意事项:
此命令的优先级最高
当程序启动时,加入此环境变量时
则会自动启用 application-test.properties配置文件

spring.profiles.include属性

当我们需在开发环境,再次细分配置信息,如:

application-dev1.properties中存储jdbc信息

application-dev2.properties中存储ip、端口信息

即在启用application-dev.properties开发环境(主)配置文件时

同时启用application-dev1.properties和application-dev2.propertie。

此时可使用spring.profiles.include属性

同时启用其他的profile

配置方法

当properties文件:

spring.profiles.include=dev1,dev2

yaml文件配置方法

spring.profiles.include:

-dev1

-dev2

spring.profiles.include:dev1,dev2

spring.profiles.active和spring.profiles.include的使用及区别

配置方式不同

配置方式一:

application.properties中,配置spring.profiles.active=dev的同时指定spring.profiles.include=dev1,dev2

配置方式二:

application.properties中,配置spring.profiles.active=dev,application-dev.properties中

配置spring.profiles.include=dev1,dev2

使用application-dev.properties时自动就激活了dev1、dev2两个文件,不用再次指定

区别

第一种方式启动时

控制台打印The following profiles are active:dev1,dev2,dev

第二种方式启动时

控制台打印The following profiles are active:dev, dev1,dev2

按照顺序

后面的覆盖前面

例:

application-dev.properties配置

my.name=dev

my.height=190

#同时触发dev1和dev2的激活

spring.profiles.include=dev1,dev2

application-dev1.properties配置:

my.name=dev1

my.height=191

application-dev2.properties配置:

my.name=dev2

#my.height=192

application-prod.properties配置:

my.name=prod

my.height=182

application-prod1.properties配置:

my.name=prod1

my.height=188

application-prod2.properties配置:

my.name=prod2

my.height=182

测试一:

在application.properties配置文件中,指定

#激活的是开发环境配置文件

spring.profiles.active=dev

启动时不指定参数

结果:

打印的内容为:姓名:dev2,身高:191

----具体原因如下所示----

先加载application.properties

再加载application-dev.properties,

my.name=dev

my.height=190

加载application-dev1.properties,

my.name=dev1

my.height=191

加载application-dev2.properties,

my.name=dev2

my.height=191

测试二:

在测试一的基础上,启动时指定参数:--spring.profiles.active=prod

优先级最高,会使用生产环境配置文件

以上配置信息,将输出以下信息

打印的内容为:姓名:prod,身高:182

测试三:

在application.properties配置文件中,指定

#激活的是生产环境配置文件

spring.profiles.active=prod

#同时触发prod1和prod2的激活

spring.profiles.include=prod1

启动时不指定参数

---运行以上信息,将输出以下信息

The following profiles are active: prod1,prod2,prod

打印的内容为:姓名:prod,身高:182

相关推荐
彦为君几秒前
JavaSE-07-异常机制
java·开发语言·后端·python·spring
_Aaron___1 小时前
Spring AI 接入 MCP:工具调用不是“能调就行”,关键是边界治理
java·人工智能·spring
我是一颗柠檬1 小时前
【MySQL全面教学】MySQL性能优化实战Day13(2026年)
数据库·后端·sql·mysql·性能优化·database
向量引擎1 小时前
从零起步,如何打造专属向量引擎 API 中转工作流?
java·服务器·前端
LJianK11 小时前
普通接口,用到getter和setter方法的地方,jackson转换
java
辰海Coding1 小时前
MiniSpring框架学习-分解 Dispatcher
java·学习·spring·架构
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题 第84题】【Mysql篇】第14题:为什么用 InnoDB 存储引擎的表建议用整型的自增主键?
java·开发语言·数据库·mysql·面试
小江的记录本1 小时前
【JVM虚拟机】JVM调优:常用JVM参数、调优核心指标、OOM排查、GC日志分析、Arthas工具使用(附《思维导图》+《面试高频考点清单》)
java·jvm·spring boot·后端·python·spring·面试
程序员cxuan2 小时前
我花了两天时间,终于把 Codex 额度掉太快的问题整明白了!!
人工智能·后端·程序员
IT_陈寒2 小时前
Vue这个动态响应坑把我整不会了
前端·人工智能·后端