springcloud配置中心的客户端报No spring.config.import property has been defined
在配置中心服务端能正常从gitee上获取配置文件的情况小报如下错:
在springcloud 2020.0.2版本中把bootstrap的相关依赖从spring-cloud-starter-config中移除了,导致报错.
解决方法:
把application.xml改成bootstrap.xml,bootstrap.xml的优先级高于application.xml,优先被读取。同时引入下面的依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.0.2</version>
</dependency>
配置bootstrap.xml的配置文件如下:
spring:
cloud:
config:
discovery:
enabled: true
serviceId: config-server
name: item-service
profile: dev
label: master
eureka:
client:
service-url:
defaultZone: http://eureka1:2001/eureka,http://eureka2:2002/eureka
属性的含义:
serviceId:表示springcloud配置中心的服务器的spring.application.name的属性值,也就是服务名称。
name: 表示你配置文件的名称
profile:属性相当于spring.profiles.active
lable:表示你的仓库分支
上面的配置对应的配置文件在你的仓库中的名称是:
item-service-dev.xml,也就是name属性值+profile属性值,中间用‘-’隔开。
两个切记点:
客户端中的配置文件名称是:bootstrap.xml
依赖的方面,除了引入:
<!--config 配置中心的客户端依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
还要引入bootstrap相关依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.0.2</version>
</dependency>
这样就可以完美解决。
学习springcloud的代价是很高的,因为springcloud现在处于版本高速迭代的阶段,而且不同版本之间的功能模块的可能存在很大的差异,最好是在学习的过程中看官网的相关版本的文档,协助学习,尤其是新的版本,很大坑要自己踩。