Spring Boot 2.4.x版本适配spring-cloud-config需做哪些正确修改?
Spring Boot 2.4.x 版本升级后Spring Cloud Config配置读取异常解决方案
方案一:保留原有bootstrap.yml使用习惯(改动最小)
- 首先在pom.xml/gradle.build中手动引入
spring-cloud-starter-bootstrap依赖,2.4.x之后该依赖不再默认集成,是使用bootstrap启动上下文的必备依赖 - 仅需将bootstrap.yml中原有的
spring.profiles: int修改为spring.config.activate.on-profile: int,其余云配置保持原有写法即可 - 不要在application.yml中添加
spring.config.import相关配置,两种配置加载模式混用会导致优先级冲突
方案二:使用官方推荐的全新配置导入模式(无需bootstrap.yml)
这是Spring Boot 2.4+之后的主推方案,完全废弃bootstrap启动上下文,所有配置统一放在application.yml中:
- 删掉项目中所有bootstrap.yml文件
- 在application.yml的默认配置块顶部添加
spring.config.import: "optional:configserver:" - 将原bootstrap.yml中的所有云配置按环境拆分到application.yml对应配置块即可,示例如下:
spring: application: name: my_app config: import: "optional:configserver:" cloud: config: label: develop uri: https://my.local.server username: user password: password enabled: true --- spring: config: activate: on-profile: int cloud: config: label: develop uri: https://my.int.server username: user password: password enabled: true --- # 其余环境配置以此类推
常见踩坑排查点
- 两种配置加载模式必须二选一:要么引入bootstrap依赖用bootstrap.yml,要么用
spring.config.import的新方案,不能同时使用 - 检查Spring Boot与Spring Cloud的版本兼容性,版本不匹配会直接导致配置加载逻辑异常
- 使用新方案时,
spring.config.import必须放在对应配置块的最前面,不能放在spring.cloud.config配置之后,否则不会生效
内容的提问来源于stack exchange,提问作者Swan-Work
相关产品推荐
相关产品推荐

