SpringCloud从配置中心读取git配置成功却没有效果

SpringCloud从配置中心读取git配置成功却没有效果

客户端bootstrap.yml:

spring:
  cloud:
    config:
      name: user-provider
      profile: dev
      label: master
      uri: http://localhost:8000

  application:
    name: user-provider

  profiles:
    active: dev

management:
  endpoints:
    web:
      exposure:
        include: refresh

git的user-provider-dev.yml:

server:
  port: 7001
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka,http://localhost:8762/eureka
  instance:
    prefer-ip-address: true
    instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@
    
spring:
  profiles:
    env1

uname: laohu

解决方法:
删掉git的user-provider-dev.yml.配置中的

spring:
  profiles:
    env1

原因:
chatgpt:

问题的原因是 git 配置文件中的 spring.profiles 配置导致了Spring Boot无法正确激活配置文件。

在 bootstrap.yml 中,指定了 profile 为 prod,但在 git 的 user-provider-dev.yml 文件中,又定义了一个 spring.profiles 配置,这可能导致Spring Cloud Config加载配置时出现混淆。

具体原因如下:

配置文件冲突:当Spring Cloud Config从配置中心读取配置时,它会根据激活的profile来选择具体的配置文件。如果配置文件中包含 spring.profiles,可能会改变应用程序的运行环境,从而导致配置文件加载顺序和实际生效的配置发生变化。

优先级问题:Spring Boot中,bootstrap.yml 的加载优先级高于 application.yml。如果 bootstrap.yml 中激活了 prod profile,但 git 配置文件中存在 spring.profiles,可能会覆盖或改变 bootstrap.yml 中的配置,使得某些配置未生效。

通过删除 git 配置文件中的 spring.profiles 配置,可以避免Spring Cloud Config在加载配置时发生冲突或混淆,从而确保配置正确生效。

总结:git 配置文件中的 spring.profiles 配置导致了Spring Cloud Config无法正确激活预期的配置文件,从而导致配置不生效。删除该配置可以解决问题。

我觉得就是配置冲突了

上一篇:面对数据不一致性的解决方案:


下一篇:SVN 80道面试题及参考答案(2万字长文)