當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring Cloud Feign的原理及基本使用
生活随笔
收集整理的這篇文章主要介紹了
Spring Cloud Feign的原理及基本使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- 了解Feign的作用
- 掌握Feign的使用過程
- 掌握Feign的負載均衡配置
- 掌握Feign的熔斷配置
- 掌握Feign的壓縮配置
- 掌握Feign的日志配置
一、 Feign簡介
Feign [fe?n] 譯文 偽裝。Feign是一個聲明式WebService客戶端.使用Feign能讓編寫WebService客戶端更加簡單,它的使用方法是定義一個接口,然后在上面添加注解。不再需要拼接URL,參數等操作。項目主頁:https://github.com/OpenFeign/feign 。
- 集成Ribbon的負載均衡功能
- 集成了Hystrix的熔斷器功能
- 支持請求壓縮
- 大大簡化了遠程調用的代碼,同時功能還增強啦
- Feign以更加優雅的方式編寫遠程調用代碼,并簡化重復代碼
總結:
- feign 是一個[聲明式]REST客戶端。(http客戶端:RestTemplate 使用Restful 風格進行開發的)
- feign 是基于RestTemplate開發的一個聲明式的Rest客戶端;只需要寫一個接口,定義一個注解,就可以直接使用。
二、Feign的快速入門
使用Feign替代RestTemplate發送Rest請求。
2.1 使用feign的步驟
(1)導入依賴
在user-consumer中添加spring-cloud-starter-openfeign依賴
<!--配置feign--> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>(2)創建Feign客戶端(接口)
在user-consumer中創建com.it.feign.UserClient接口,添加一個注解進行聲明@FeignClient,定義一個方法。
//name 指定的是要發送到哪個微服務對應的名字 @FeignClient(name = "user-provider",fallback = UserClientFallback.class) /*@RequestMapping("/user")*/ public interface UserClient {/*** 實際上是發送請求給微服務 獲取數據的* @param id* @return*/@RequestMapping("/user/find/{id}")public User findById(@PathVariable(name = "id") Integer id); }?解釋:
(3)編寫控制層
在user-consumer中:??創建com.it.controller.ConsumerFeignController,在Controller中使用@Autowired注入FeignClient,代碼如下:
@RestController @RequestMapping("/feign") public class ConsumerFeignController {@Autowiredprivate UserClient userClient;//根據ID獲取用戶的數據(要使用feign的方式來獲取)@RequestMapping(value = "/{id}")public User findById(@PathVariable(name = "id") Integer id){return userClient.findById(id);} }(4)在user-provider的controller 一定要【實現】聲明的接口的方法。
@RestController @RequestMapping("/user") public class UserController {@Autowiredprivate UserService userService;@GetMapping("/{id}")public User findById(@PathVariable Integer id){System.out.println("這個是18081==================================");return userService.findById(id);}//provider接受這個請求@GetMapping("/find/{id}")public User find(@PathVariable Integer id){System.out.println("這個是18081==================================");return userService.findById(id);} }(5)在啟動類中開啟Feign
在user-consumer的啟動類中添加@EnableFeignClients,開啟Feign。
@SpringBootApplication @EnableEurekaClient @EnableCircuitBreaker @EnableFeignClients//開啟feign public class UserConsumerApplication {public static void main(String[] args) {SpringApplication.run(UserConsumerApplication.class,args);}@Bean@LoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();}@Beanpublic Logger.Level feignLoggerLevel(){//設置feign調用的級別是 Fullreturn Logger.Level.FULL;} }(6)測試
請求<http://localhost:18082/feign/2>,效果如下:
總結
以上是生活随笔為你收集整理的Spring Cloud Feign的原理及基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 四种方式实现数据共享
- 下一篇: 9月16日数据技术嘉年华成都站,完整议程