【SpringCloud】(八):認識Feign及使用
這篇文章我們來認識一下Feign。
官網連結:http://cloud.spring.io/spring-cloud-static/Camden.SR7/#spring-cloud-feign
1.宣告式的客戶端web服務,讓寫web服務客戶端更加簡單
2.使用的時候建立一個介面,加上註解。
3.可插拔的註解,Feign註解,編碼,解碼,Spring MVC的支援。
4.Feign整合Ribbon和Eureka,提供負載均衡。
拷貝並修改前面所描述的電影微服務microservice-comsumer-movie,修改為:microservice-comsumer-movie-feign
1.POM.xml加入依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
2.在啟動類上新增註解:@EnableFeignClients
package com.dynamic.cloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class ComsumerMovieFeignApplication {
public static void main(String[] args) {
SpringApplication.run(ComsumerMovieFeignApplication.class, args);
}
}
3.建立一個介面UserFeignClient
在介面上加入了註解@FeignClient。配置了使用者為服務的ServicId :microservice-provider-user
package com.dynamic.cloud.feign;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.dynamic.cloud.entity.User;
@FeignClient("microservice-provider-user")
public interface UserFeignClient {
@RequestMapping(value="/simple/{id}",method = RequestMethod.GET) //只能是RequestMapping
public User findById(@PathVariable("id") Long id); //@PathVariable需要設定括號中的名稱
@RequestMapping(value="/user",method = RequestMethod.POST)
public User postUser(@RequestBody User user);
//如果引數是物件,請求就不會成功,即使指定了Get方法,feign依然會以Post方式進行傳送請求。
//解決方案:@RequestParam("id") Long id,@RequestParam("name") Long name
@RequestMapping(value="/get-user",method = RequestMethod.GET)
public User getUser( @RequestParam("id") Long id,@RequestParam("name") String name);
}
package com.dynamic.cloud.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.dynamic.cloud.entity.User;
import com.dynamic.cloud.feign.UserFeignClient;
@RestController
public class MovieController {
@Autowired
private UserFeignClient userFeignClient;
@GetMapping("/movie/{id}")
public User findById(@PathVariable Long id)
{
return this.userFeignClient.findById(id);
}
@GetMapping("/test")
public User testPost(User user)
{
return this.userFeignClient.postUser(user);
}
@GetMapping("/get-user")
public User getUser(@RequestParam("id") Long id,@RequestParam("name")String name)
{
return this.userFeignClient.getUser(id,name);
}
}
使用者微服務:microservice-provider-user
在Controller中加入響應呼叫方式,其它不做修改
@PostMapping("/user")
public User postUser(@RequestBody User user)
{
return user;
}
@GetMapping("/get-user")
public User getUser( User user)
{
return user;
}
通過Feign完成呼叫。
相關文章
- SpringCloud——Feign例項及原理SpringGCCloud
- Springcloud(二) feignSpringGCCloud
- SpringCloud-FeignSpringGCCloud
- SpringCloud-使用Feign呼叫服務介面SpringGCCloud
- SpringCloud Feign的分析SpringGCCloud
- (22)SpringCloud-使用Feign呼叫服務介面SpringGCCloud
- SpringCloud系列之使用Feign進行服務呼叫SpringGCCloud
- SpringCloud之使用Feign跨服務呼叫最佳方式SpringGCCloud
- SpringCloud-技術專區-從原始碼層面讓你認識Feign工作流程和運作機制SpringGCCloud原始碼
- 【SpringCloud】(九):Feign的自定義配置SpringGCCloud
- SpringCloud微服務治理二(Robbin,Hystix,Feign)SpringGCCloud微服務
- 【SpringCloud】(十四):Feign對Hystrix的支援 fallbackFactorySpringGCCloud
- 認識並使用PromisePromise
- 認識並使用 PromisePromise
- Cookie認識與使用Cookie
- springcloud中feign檔案上傳、下載SpringGCCloud
- 分享一個 SpringCloud Feign 中所埋藏的坑SpringGCCloud
- SpringCloud 2020.0.4 系列之 FeignSpringGCCloud
- SpringCloud分散式微服務b2b2c電子商務docker-feign-hystrix-ribbon(八)SpringGCCloud分散式微服務Docker
- [jaeger] 四、微服務之呼叫鏈(Feign+SpringCloud)微服務SpringGCCloud
- SpringCloud之服務提供與呼叫(Ribbon,Feign)SpringGCCloud
- springcloud學習筆記(二)Spring Cloud FeignSpringGCCloud筆記
- SpringCloud微服務(基於Eureka+Feign+Hystrix+Zuul)SpringGCCloud微服務Zuul
- SpringCloud學習筆記:宣告式呼叫Feign(4)SpringGCCloud筆記
- SpringCloud解決feign呼叫token丟失問題SpringGCCloud
- SpringCloud學習之路(四) - 服務消費者(Feign)SpringGCCloud
- 2018-03-29 SpringCloud Feign DecoderSpringGCCloud
- freebsd 系統磁碟及gmirror認識
- SpringBoot-認識及入門Spring Boot
- 認識及操作SQL Server 資料庫SQLServer資料庫
- SpringCloud(第 013 篇)電影微服務使用定製化 Feign 在客戶端進行負載均衡排程併為 Feign 配置帳號密碼登入認證 Eureka...SpringGCCloud微服務客戶端負載密碼
- ②SpringCloud 實戰:引入Feign元件,發起服務間呼叫SpringGCCloud元件
- 認識node核心模組--全域性物件及Cluster物件
- Linux系統中的使用者的基礎認識及操作命令Linux
- SpringCloud 通過feign檔案傳輸並打zip包下載SpringGCCloud
- 微服務實戰SpringCloud之Spring Cloud Feign替代HTTP Client微服務SpringGCCloudHTTPclient
- SpringCloud基礎概念學習筆記(Eureka、Ribbon、Feign、Zuul)SpringGCCloud筆記Zuul
- 認知網路知識點及例題總結