- SpringCloud是基于Spring Boot的,如果想使用Spring Cloud中的组件,那么必然要先创建一个Spring Boot项目,然后再引入Spring Cloud的依赖。此处问题来了,我使用的Spring Boot版本如果定下来了,那么我的Spring Cloud版本是什么?
下图是Spring官网给的,对应的版本。一定要对应,不然可能出现很多错误,不好排查。
- @EnableEurekaServer @EnableDiscoveryClient
找不到,请检查Spring Cloud和Spring Boot版本是否兼容。 - @EnableFeignClients不能引入
引入不了@EnableFeignClients注解,因为到了Spring Boot 2.0这玩意已经被移除了,你不加入相应的maven依赖,是用不了的,当然这里很好解决,但要注意了,这个依赖有2个,千万别搞混了。本人在这入过坑。
<!--远程服务调用,springboot2.0版本以上,需要导入下面的包才能使用 @EnableFeignClients 注解-->
注释的这个依赖别用,这个虽然不报错,也好像可以使用,但实际是有bug的,会导致无法注入bean
<!--<dependency>-->
<!--<groupId>org.springframework.cloud</groupId>-->
<!--<artifactId>spring-cloud-openfeign-core</artifactId>-->
<!--</dependency>-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
- Erureka Server的maven坐标artifactId 名字问题
Spring Boot 1.5版本使用spring-cloud-starter-eureka-server还是没问题的。2.0以上建议使用 spring-cloud-starter-netflix-eureka-server。
以下是我写的Spring Cloud Eureka微服务Demo。可以看看里面的pom文件。其中需要注意的是Spring Cloud的依赖以如下方式加入。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR7</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
所以再添加Spring Cloud的其他组件时,不用指定版本。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>