zoukankan      html  css  js  c++  java
  • 分布式配置中心config-client配置报错:java.lang.IllegalStateException: duplicate key: spring

    今天练习分布式配置中心,写config-client配置文件,使用bootstrap.properties配置,运行没有问题。

    bootstrap.properties:

    spring.application.name=config-client
    spring.cloud.config.label=master
    spring.cloud.config.profile=dev
    spring.cloud.config.uri= http://localhost:8888/
    server.port=8881
    
    #spring.cloud.config.label 指明远程仓库的分支
    
    #spring.cloud.config.profile
    
    #dev开发环境配置文件
    #test测试环境
    #pro正式环境
    #spring.cloud.config.uri= http://localhost:8888/ 指明配置服务中心的网址。
    
    #spring.cloud.config.discovery.enabled 是从配置中心读取文件。
    #spring.cloud.config.discovery.serviceId 配置中心的servieId,即服务名

    但是我使用了bootstrap.yml配置文件,启动报错:

    bootstrap.yml:

    spring:
      application:
        name: config-client
    server:
      port: 8881
    
    spring:
      cloud:
        config:
          label: master
          profile: dev
          uri: http://localhost:8888/

    报错如下:

    java.lang.IllegalStateException: Failed to load property source from location 'classpath:/bootstrap.yml'
        at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:538)
        at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.loadForFileExtension(ConfigFileApplicationListener.java:497)
        at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:465)
        at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.lambda$null$6(ConfigFileApplicationListener.java:447)
        at java.lang.Iterable.forEach(Unknown Source)
        at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.lambda$load$7(ConfigFileApplicationListener.java:446)
        at java.lang.Iterable.forEach(Unknown Source)
        at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:443)
        at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:335)
        at org.springframework.boot.context.config.ConfigFileApplicationListener.addPropertySources(ConfigFileApplicationListener.java:214)
        at org.springframework.boot.context.config.ConfigFileApplicationListener.postProcessEnvironment(ConfigFileApplicationListener.java:197)
        at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEnvironmentPreparedEvent(ConfigFileApplicationListener.java:184)
        at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEvent(ConfigFileApplicationListener.java:170)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
        at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:74)
        at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54)
        at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:358)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:317)
        at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:137)
        at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:197)
        at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:104)
        at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:70)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
        at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:74)
        at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54)
        at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:358)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:317)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1255)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1243)
        at cn.itcast.com.ConfigClientApplication.main(ConfigClientApplication.java:22)
    Caused by: java.lang.IllegalStateException: duplicate key: spring
        at org.yaml.snakeyaml.constructor.SafeConstructor.processDuplicateKeys(SafeConstructor.java:99)
        at org.yaml.snakeyaml.constructor.SafeConstructor.flattenMapping(SafeConstructor.java:70)
        at org.yaml.snakeyaml.constructor.SafeConstructor.constructMapping2ndStep(SafeConstructor.java:182)
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping(BaseConstructor.java:443)
        at org.yaml.snakeyaml.constructor.SafeConstructor$ConstructYamlMap.construct(SafeConstructor.java:519)
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:207)
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:196)
        at org.springframework.boot.env.OriginTrackedYamlLoader$OriginTrackingConstructor.constructObject(OriginTrackedYamlLoader.java:94)
        at org.yaml.snakeyaml.constructor.BaseConstructor.constructDocument(BaseConstructor.java:161)
        at org.yaml.snakeyaml.constructor.BaseConstructor.getData(BaseConstructor.java:127)
        at org.yaml.snakeyaml.Yaml$1.next(Yaml.java:547)
        at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:166)
        at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:139)
        at org.springframework.boot.env.OriginTrackedYamlLoader.load(OriginTrackedYamlLoader.java:75)
        at org.springframework.boot.env.YamlPropertySourceLoader.load(YamlPropertySourceLoader.java:50)
        at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.loadDocuments(ConfigFileApplicationListener.java:556)
        at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:518)
        ... 35 common frames omitted

    报错信息显示无法加载配置文件,原因是重复建“spring”。

    解决:yml文件在单一文件中,可用连续三个连字号(---)区分多个文件。更改bootstrap.yml:

    spring:
      application:
        name: config-client
    server:
      port: 8881
    ---
    spring:
      cloud:
        config:
          label: master
          profile: dev
          uri: http://localhost:8888/

    重启,运行成功。

  • 相关阅读:
    Vi编辑器常用命令
    Notepad++常用命令——大大提升编码效率
    得到python某个模块的路径
    常用软件生命周期模型
    最常用的python实现
    Vi编辑器常用命令
    季羡林谈人生——意义和价值
    工业标准的品质也已成为开源世界中的范例之一
    《葵花宝典:WPF自学手册》三大网点书评集萃
    博文视点大讲堂37期 ——It's Android Time:程序员创富有道!
  • 原文地址:https://www.cnblogs.com/saule/p/11569868.html
Copyright © 2011-2022 走看看