服务调用Feign
Feign
基本概念
- Feign是Netflix開發(fā)的聲明式、模板化的HTTP客戶端, Feign可以幫助我們更快捷、優(yōu)雅地調(diào)用HTTP API。
- Feign支持多種注解,例如Feign自帶的注解或者JAX-RS注解等。
- Spring Cloud對Feign進行了增強,使Feign支持了Spring MVC注解,并整合了Ribbon和Eureka,從而讓Feign的使用更加方便。
- Spring Cloud Feign是基于Netflix feign實現(xiàn),整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供這兩者的強大功能外,還提供了一種聲明式的Web服務客戶端定義的方式。
- Spring Cloud Feign幫助我們定義和實現(xiàn)依賴服務接口的定義。在Spring Cloud feign的實現(xiàn)下,只需要創(chuàng)建一個接口并用注解方式配置它,即可完成服務提供方的接口綁定,簡化了在使用Spring Cloud Ribbon時自行封裝服務調(diào)用客戶端的開發(fā)量。
實現(xiàn)服務調(diào)用
需求
刪除課時的同時刪除云端視頻在service模塊添加pom依賴
<!--服務調(diào)用--> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>在調(diào)用端的啟動類添加注解
@EnableFeignClients創(chuàng)建包和接口
創(chuàng)建client包
@FeignClient注解用于指定從哪個服務中調(diào)用功能 ,名稱與被調(diào)用的服務名保持一致。
@GetMapping注解用于對被調(diào)用的微服務進行地址映射。
@PathVariable注解一定要指定參數(shù)名稱,否則出錯
@Component注解防止,在其他位置注入CodClient時idea報錯
@FeignClient("service-vod") @Component public interface VodClient {@DeleteMapping(value = "/eduvod/vod/video/{videoId}")public R removeVideo(@PathVariable("videoId") String videoId); }調(diào)用微服務
在調(diào)用端的VideoServiceImpl中調(diào)用client中的方法 @Override public boolean removeVideoById(String id) {//查詢云端視頻idVideo video = baseMapper.selectById(id);String videoSourceId = video.getVideoSourceId();//刪除視頻資源if(!StringUtils.isEmpty(videoSourceId)){vodClient.removeVideo(videoSourceId);}Integer result = baseMapper.deleteById(id);return null != result && result > 0; }總結
- 上一篇: Nacos安装和服务注册
- 下一篇: 登录业务介绍(单点登录)