公司项目中需要调用微服务,公司使用的Spring Boot版本是1.5.X,而现在的都是用的2.X版本以上了。在FeignClinet、Spring Cloud与Spring Boot的版本问题上跌跤了,现在在这里记录下来,希望对大家有用。
首先,先看一下官网给出的Spring Cloud与Spring Boot版本兼容性:
Spring Cloud | Spring Boot |
---|---|
Hoxton | 2.2.x, 2.3.x (Starting with SR5) |
Greenwich | 2.1.x |
Finchley | 2.0.x |
Edgware | 1.5.x |
Dalston | 1.5.x |
并且还有一个值得注意的地方是Spring Cloud对Feign的支持在Finchley版本以下是由spring-cloud-starter-feign包提供的,而之后就是由spring-cloud-starter-openfeign提供的。
根据我的情况,我的Spring Cloud版本选了Edgware(脑子里浮现出一串数字:7777777),并且feign的依赖应该使用spring-cloud-starter-feign。大家可以根据自己项目情况选择。在pom文件中添加依赖:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Edgware.RELEASE</version>
<type>pom</type>
<scope>runtime</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
然后再给大家说一下Feign的使用
@FeignClient(name = "feignClient", url="xxxx")
public interface FeignClient {
@PostMapping(value = "/query")
String query(@RequestParam String token);
}
@EnableFeignClients(basePackages = {"xxx"}) // 别忘了在启动类上加上注解,xxx的值为FeignClient定义所在的包
@Autowired
FeignClient feignClient;
feignClient.query("xxxxxxxxx");
到这里就结束了,大家有什么意见和建议欢迎提出。