Spring Cloud Config 2020.0.3未加载全局配置仅加载指定Profile配置报错
问题根因
- Spring Cloud 2020.0.x(Ilford版本)+ Spring Boot 2.4.x组合对配置加载逻辑做了两处核心调整,是问题的主要诱因:
- 默认关闭了bootstrap上下文,仅引入
spring-cloud-starter-bootstrap依赖后bootstrap.yaml配置才会生效 - Spring Boot 2.4.x默认启用了新的配置文件处理规则,多profile YAML文档中无profile的全局配置不会自动和指定激活profile的配置合并
- 默认关闭了bootstrap上下文,仅引入
- 你当前配置中心的配置文件名为
my_config.yaml,但应用的spring.application.name为auth-service,Spring Cloud Config默认会拉取和应用名同名的配置文件,未显式指定配置文件名的情况下无法正确拉取my_config.yaml的内容
解决方案
按优先级执行以下操作:
- 确认项目已引入bootstrap启动依赖,Maven配置示例:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency>
- 修改bootstrap.yaml,添加配置文件名称指定、开启旧版配置处理逻辑,调整后完整配置如下:
server: port: 8081 spring: application: name: auth-service config: use-legacy-processing: true # 开启旧版配置处理逻辑,自动合并全局配置和profile配置 cloud: config: enabled: true fail-fast: true allow-override: true profile: dev uri: http://localhost:5000 name: my_config # 此处值和你配置中心存放的配置文件名前缀保持一致即可
- (可选)如果修改后仍存在Hibernate方言报错,在配置文件中补充方言指定即可:
spring: jpa: database-platform: org.hibernate.dialect.MariaDBDialect
验证方式
启动应用后可通过Spring Boot Actuator的/env端点,查看spring.datasource相关的username、driver-class-name等属性是否已正确加载。
内容的提问来源于stack exchange,提问作者Nguyen Dai
相关产品推荐
相关产品推荐

