Spring Boot加载双yml配置文件的属性覆盖规则咨询
Spring Boot 多YAML配置文件属性合并规则
- 结论:Spring Boot加载多配置文件时不会整体覆盖上层的整个配置块,只会按优先级对同层级的同名属性做覆盖,未在高优先级配置中定义的属性会自动继承低优先级配置的取值。
- 优先级说明:你场景中的服务专属配置
ui-service.yml优先级高于通用配置application.yml,同名属性会优先取ui-service.yml的配置值。 - 你提到的场景验证:如果你删除
ui-service.yml中的spring.profiles: DEV配置,应用会自动继承application.yml中的spring.profiles取值,同时spring.datasource相关配置会正常使用ui-service.yml中定义的自定义值,二者互不影响。
合并效果示例
你给出的两个配置最终合并后的spring配置块效果如下:
spring: profiles: DEV # 若ui-service删除该配置则自动继承application的取值 jmx: enabled: false # 二者配置一致,无差异 datasource: url: urlB # 覆盖application中的urlA driver-class-name: # 取ui-service的配置值 username: // # 取ui-service的配置值 password: .. # 取ui-service的配置值 jpa:.. # ui-service未配置的jpa属性会自动继承application中的对应配置
补充说明:该合并规则对所有Spring Boot的配置源都生效,包括不同激活profile对应的配置文件、命令行参数、环境变量等配置源。
内容的提问来源于stack exchange,提问作者Julia
相关产品推荐
相关产品推荐

