【问题标题】:No spring.config.import property has been defined没有定义 spring.config.import 属性
【发布时间】:2021-08-03 01:00:13
【问题描述】:

在创建 Spring Boot 云配置应用程序时出现以下错误。 有什么帮助吗?

No spring.config.import property has been defined
 
Action:

Add a spring.config.import=configserver: property to your configuration.   
If configuration is not required add spring.config.import=optional:configserver: instead.
To disable this check, set spring.cloud.config.enabled=false or 
spring.cloud.config.import-check.enabled=false.

【问题讨论】:

    标签: spring-cloud-config


    【解决方案1】:

    解决方案:pom.xml文件中添加如下依赖:

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bootstrap</artifactId>
    </dependency>
    

    这解决了我的问题。

    【讨论】:

    • 这不适用于版本 3.0.3; &lt;artifactId&gt;spring-cloud-starter-config&lt;/artifactId&gt; 已经使用了指定的依赖项
    • 对于仍然遇到此问题的任何人,此答案不再是最新的,SpringBoot 2.4 或更高版本建议使用 spring.config.import 属性,除非您喜欢,否则无需包含其他依赖项就是使用bootstrap.yml。有关更多信息,请参阅下面的 @Justin Cranford's@shubh gaikwad's 答案。
    • @emrekgn 这是最好的解决方案,只是一个简单的 pom 添加。 spring.config.import 将显示为unknown property,除了localhost:8888 之外,没有办法将配置服务器指向任何地方。我已阅读文档并尝试两种方式设置 URL,但它只会解析为 localhost。在 application.yml 和 boostrap.yml 中尝试过
    • @PhilipRego 我不确定,但可能与您尝试的版本有关?我们目前在 prod env 中使用 spring-cloud-config-server v3.0.4,config-server 从一些 gitlab.com URL 中提取配置,其他微服务通过设置 @987654330 访问此配置服务器@(不是本地主机)在他们的 application.yml.
    • @emrekgn 我需要更新我的配置服务器吗?我刚刚升级了一个客户端应用程序spring-cloud-config-client v3.0.4
    【解决方案2】:

    根本原因是 Spring Boot 2.4 更改了其默认功能。新的spring.config.import 属性是必需的。

    要解决此问题,请添加新的 spring.config.import 属性。这是application.yml 中对我有用的示例。

    spring:
      config:
        import: "optional:configserver:"
    

    Here 是您需要设置不同值的文档:

    Spring Boot 配置数据导入

    Spring Boot 2.4 引入了一种通过 spring.config.import 属性导入配置数据的新方法。这是现在绑定到配置服务器的默认方式。

    【讨论】:

    • spring.config.import 将显示为unknown property,除了localhost:8888 之外,无法将配置服务器指向任何地方。我已阅读文档并尝试两种方式设置 URL,但它只会解析为 localhost。在 application.yml 和 boostrap.yml 中尝试过
    【解决方案3】:

    自 Spring Boot 2.4 起导入配置由 spring.config.import 功能完成。

    application.properties 的下方添加连接到默认配置服务器 URL http://localhost:8888

    spring.config.import=optional:configserver:
    

    或 yml:

    spring.config.import: "optional:configserver:"
    

    reference 文档中描述了更多配置选项。

    如果您将 org.springframework.cloud:spring-cloud-starter-bootstrap 依赖项添加到您的项目,旧版引导功能仍然可用。

    【讨论】:

      【解决方案4】:

      添加bootstrap.yml文件:

      spring:
          cloud:
            config:
              enabled: true
              uri: http://localhost:9296
      

      9296 是您的云配置服务器端口

      并添加以下依赖项:

      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-bootstrap</artifactId>
      </dependency>
      

      如果上述方法不起作用,只需将以下属性添加到您的 application.yml 文件中即可停止端口检查,因为您已经在 bootstrap.yml 中定义了这一点

      spring:
          cloud:
            config:
              import-check:
                enabled: false
      

      【讨论】:

        【解决方案5】:

        您收到此错误是因为您使用的是新版本的 Spring Boot 和 Spring Cloud,但 您正尝试以旧方式对其进行配置。

        原因

        Spring Cloud Config Client 已更改,从技术上讲 bootstrap.propertiesbootstrap.yml 文件已弃用

        正确的解决方案

        1. 将所有属性从boostrap.properties 移动到application.properties(也可以是.yml
        2. 删除bootstrap.properties文件
        3. spring.cloud.config.uri=http://localhost:8888 替换为spring.config.import=configserver:http://localhost:8888

        这是告诉您 Spring Boot 应用程序要从运行在 localhost:8888 上的 Spring Cloud Config 服务加载属性的正确方法。 p>

        旧版解决方案

        如果您想使用旧版bootstrap.properties 文件,您只需添加以下依赖项:

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
        

        请注意,这是一种已弃用的机制,因此如果您要创建一个新项目,请继续使用正确的解决方案

        【讨论】:

          【解决方案6】:

          我在实现spring-cloud-config 客户端时遇到了这个问题。 我添加了bootstrap.yml 来指定配置服务器地址。

          后来,在application.yml 中添加了以下代码,解决了这个问题。

          spring:
             application:
              name: user-service
             config:
               import: optional:configserver:http://localhost:9004
          

          【讨论】:

            【解决方案7】:

            错误消息本身对解决方案有建议/行动:

            Add a spring.config.import=configserver: property to your configuration.
            
            If configuration is not required add spring.config.import= optional:configserver: instead.
            
            To disable this check, set spring.cloud.config.enabled=false 
            
            or
            
            spring.cloud.config.import-check.enabled=false.
            

            【讨论】:

              【解决方案8】:

              添加此依赖项也解决了我的问题: spring-cloud-starter-bootstrap

              【讨论】:

                【解决方案9】:

                我在 localhost 的 8888 端口上使用 Spring Cloud Config Server,Spring 版本 2.5.4 和 Java 16

                我的 bootstrap.properties:

                spring.application.name=hr-worker
                # Server Config
                spring.cloud.config.enabled=true
                spring.cloud.config.uri= http://localhost:8888
                

                为了停止出错,我刚刚将此配置放在我的 application.properties 中:

                spring.config.import=optional:configserver:http://localhost:8888
                

                【讨论】:

                  【解决方案10】:

                  我通过删除依赖项spring-cloud-starter-config 克服了错误。如果你保持它,那么它会不断提示。我认为使用较新的 Spring Boot 我们不需要依赖项。

                  <dependency>
                      <groupId>org.springframework.cloud</groupId>
                      <artifactId>spring-cloud-starter-config</artifactId>
                  </dependency>
                  

                  bootstrap.properties:

                  spring.application.name=config-client-app
                  eureka.client.server-url.defaultZone=http://localhost:8761/eureka
                  spring.config.import=optional:configserver:
                  

                  我正在使用的春季版本:

                  <spring-cloud.version>2020.0.3</spring-cloud.version>
                  

                  【讨论】:

                  • 为什么需要删除启动器依赖项? Spring doc here 专门用它来配置配置客户端。您是否可能忘记包含spring-cloud-dependencies bom?
                  猜你喜欢
                  • 2021-12-09
                  • 2013-01-04
                  • 2014-11-14
                  • 2021-10-15
                  • 1970-01-01
                  • 1970-01-01
                  • 2022-01-23
                  • 2021-10-17
                  • 2019-08-07
                  相关资源
                  最近更新 更多