spring cloud-feign
来源:互联网 发布:飞利浦e5音响 知乎 编辑:程序博客网 时间:2024/05/28 05:14
在微服务架构中肯定少不了服务之间的调用,我们一般会在application.yml声明目标微服务的url地址,在java代码中通过httpclient或spring resttemplate或httpasyncclient工具调用目标微服务。
spring cloud对微服务的调用进行了组件化,用feigin组件进行微服务调用。
feign是一个声明式的WebService客户端。使用Feign能让编写WebService更加简单,它的使用方法是定义一个http接口,然后在接口上添加注解,同时也支持JAX-RS标准的注解。feign也支持可插拔式的编码器和解码器。spring cloud对feign进行了封装,使其支持springMVC标注注解和HttpMessageConverters。feign可以与eureka和ribbon组合使用以支持负载均衡。
上述是理论,下面我们通过code实例讲解:
在spring cloud-eureka讲解中,我们启动eureka服务,用于服务注册与发现。然后启动服务提供方microservice-provider-user,通过microservice-consumer-movie服务消费方调用微服务。文中我们是通过spring的RestTemplate调用的微服务。
如果使用feign,我们只需声明服务调用接口,然后通过@FeignClient调用:
import org.springframework.cloud.netflix.feign.FeignClient;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 com.itmuch.cloud.entity.User;@FeignClient("microservice-provider-user")public interface UserFeignClient { // 两个坑: // 1. @GetMapping不支持; // 2. @PathVariable得设置value; @RequestMapping(value = "/simple/{id}", method = RequestMethod.GET) public User findById(@PathVariable("id") Long id); }
通过上述code可以发现,我们调用微服务使用的是微服务的application name,然后在@RequestMapping注解声明具体的请求接口和请求方式,便实现了微服务的调用。
使用feign调用微服务,即简化了服务调用过程,同时也为eureka+feign+ribbon组合支持微服务负载均衡提供了支持。
下篇文章我们将讲解如何使用eureka+feign+ribbon支持微服务负载均衡。
- Spring Cloud feign
- Spring Cloud Feign诠释
- spring cloud-feign
- Spring Cloud Feign常见问题
- spring cloud Feign
- spring cloud feign
- Spring Cloud feign使用
- Spring Cloud Feign
- Spring Cloud Feign
- spring-cloud【Feign】
- spring cloud day03 【feign】
- Spring Cloud之Feign入门
- Spring Cloud Feign实例讲解
- Spring Cloud Feign 使用方式
- spring cloud feign做rpc
- 【Spring Cloud】Feign接口调用
- spring cloud之feign(四)
- Spring Cloud Feign 启动UnsatisfiedDependencyException
- improve your python code(2)
- PopupWindow、EditText
- mysql delete和truncate区别
- VBA下弹框打开excel文件并读取数据
- Thinkphp我们知道的事!
- spring cloud-feign
- IntentService(二)
- 【C#】初学者的一点思考
- 轻松看懂机器学习十大常用算法
- There is no Action mapped for namespace [/cargo] and action name [contractAction_list] associated wi
- J2EE系列之Struts2学习笔记(二十二)--Struts2多文件上传和文件下载
- retrofit 图文上传
- bzoj 1211 prufer编码+排列组合
- Unity技术面试题100问