没有定义 spring.config.import 属性

No spring.config.import property has been defined

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

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.

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

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

这解决了我的问题。

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

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

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

从 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 依赖项添加到您的项目,旧版 bootstrap 功能仍然可用。

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

添加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

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

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 Boot 2.4 更改了其默认功能。新的 spring.config.import 属性 是强制性的。

要修复,请添加新的 spring.config.import 属性。这是在 application.yml.

中对我有用的示例
spring:
  config:
    import: "optional:configserver:"

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

Spring Boot Config Data Import

Spring Boot 2.4 introduced a new way to import configuration data via the spring.config.import property. This is now the default way to bind to Config Server.

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

<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 我正在使用的版本:

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

我在本地主机的端口 8888 上使用 Spring 云配置服务器,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

您收到此错误是因为 您使用的是新版本的 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启动应用程序您想要从Spring云配置服务[=50=加载属性的正确方法] 即 localhost:8888 上的 运行。

旧版解决方案

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

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

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

我使用 spring 2.4.4 版本克服了错误 我当时使用的是 2.5.1

application.properties:

`
spring.application.name=testserv
spring.profiles.active=prodtest
spring.config.import=optional:configserver:http://localhost:8071

spring.cloud.config.enabled=true
spring.cloud.config.uri=http://localhost:8071

management.endpoints.web.exposure.include=*

eureka.instance.preferIpAddress = true 
eureka.client.registerWithEureka = true
eureka.client.fetchRegistry = true
eureka.client.serviceUrl.defaultZone = http://localhost:8070/eureka/

`

2020.0.3

对于 spring 版本 > 2.6.6 在 application.property.

下方添加 属性

spring.application.name=... //应用程序名称

spring.profiles.active=产品测试

spring.config.import=可选:configserver:http://localhost:8071

spring.cloud.config.enabled=真

spring.cloud.config.uri=http://localhost:8071

management.endpoints.web.exposure.include=*

eureka.instance.preferIpAddress = 真

eureka.client.registerWithEureka = 真

eureka.client.fetchRegistry = 真

eureka.client.serviceUrl.defaultZone = http://localhost:8070/eureka/