spring.profiles.active与spring.config.activate.on-profile的区别是什么?
spring.profiles.active 与 spring.config.activate.on-profile 的具体区别
警告信息翻译
警告:"WARN","msg":"从路径'类路径资源 [application.yaml]'导入的属性'spring.profiles'无效,应替换为'spring.config.activate.on-profile' [来源: 类路径资源 [application.yaml]"
核心区别
1. 作用场景完全不同
spring.profiles.active:全局级的环境激活开关,用来指定当前应用要加载哪一组环境配置。比如想让应用以dev环境启动,就把它配置在主配置文件的根节点,告诉Spring Boot加载dev相关配置。
示例代码:spring: profiles: active: devspring.config.activate.on-profile:局部配置的条件生效标记,用来定义某一段配置仅在特定profile激活时才生效。比如同一配置文件里,dev环境用8081端口,prod环境用80端口,就可以用它来区分。
示例代码:# 默认端口 server: port: 8080 --- # 仅dev环境生效的配置 spring: config: activate: on-profile: dev server: port: 8081 --- # 仅prod环境生效的配置 spring: config: activate: on-profile: prod server: port: 80
2. 配置层级与优先级不同
spring.profiles.active是全局配置,优先级最高,直接决定整个应用的运行环境,所有带spring.config.activate.on-profile的配置块都要依赖它激活的profile才能生效。spring.config.activate.on-profile是局部条件,属于配置片段的附属标记,本身不能激活环境,只能被动响应spring.profiles.active指定的环境。
3. 版本兼容性差异
spring.profiles.active:从Spring Boot诞生至今一直是合法的全局激活配置,未被弃用,可正常使用。- 警告里提到的旧写法
spring.profiles(用来指定配置片段生效的profile)在Spring Boot 2.4+版本被弃用,官方要求用spring.config.activate.on-profile替代,这就是你看到警告的原因——配置文件里用了旧的spring.profiles标记局部配置的生效条件,需要替换为新写法。
内容的提问来源于stack exchange,提问作者Prashant kamble
相关产品推荐
相关产品推荐

