1. 优势
 
  可以使用maven 进行访问,实现代码的共享,减少跨服务调用服务编写的问题
 
2. 使用
 
   定义接口

  1. publicinterfaceIUserService{
  2. @RequestMapping(method =RequestMethod.GET, value ="/users/app",headers={"tenantid"})
  3. @ApiOperation(value ="发送短信通知",httpMethod ="GET", response =User.class,notes ="请保证传入字段正确")
  4. User getUser(@RequestParam("id")String id,@RequestHeader("tenantid")String tenantid);
  5. @RequestMapping(method =RequestMethod.GET, value ="/users/app2")
  6. User getUser2();
  7. @RequestMapping(method =RequestMethod.GET, value ="/users/app3")
  8. User getUser3();
  9. @RequestMapping(method =RequestMethod.POST, value ="/users/app3")
  10. User getUser4(@RequestBodyUser users);
  11. }
spring mvc rest  接口实现
 

  1. @RestController
  2. publicclassUserServiceFeignControllerimplementsIUserService{
  3. @Autowired
  4. privateUserserviceImpl userserviceImpl;
  5. @Override
  6. publicUser getUser2(){
  7. // TODO Auto-generated method stub
  8. return userserviceImpl.getUser2();
  9. }
  10. @Override
  11. publicUser getUser3(){
  12. // TODO Auto-generated method stub
  13. return userserviceImpl.getUser3();
  14. }
  15. @Override
  16. publicUser getUser(String id,@RequestHeader("tenantid")String tenantid){
  17. // TODO Auto-generated method stub
  18. return userserviceImpl.getUser(id, tenantid);
  19. }
  20. @Override
  21. publicUser getUser4(User users){
  22. // TODO Auto-generated method stub
  23. return users;
  24. }
  25. }
feign 跨服务调用
 
  1. @FeignClient(url="http://localhost:8089/",name="userservicecall")
  2. publicinterfaceIFeignUserServiceextendsIUserService{
  3. }
注解
  1. @SpringBootApplication
  2. @EnableFeignClients()
  3. publicclassApplication{
  4. publicstaticvoid main(String[] args){
  5. SpringApplication.run(Application.class, args);
  6. }
  7. }
调用
  1. @RestController
  2. publicclassUserCacheController{
  3. @Autowired
  4. privateIFeignUserService userservice;
  5. @RequestMapping(value ="/demo1", method =RequestMethod.GET)
  6. publicObject importUser(String id,@RequestHeader("tenantid")String tenantid)throwsExecutionException{
  7. return userservice.getUser(id,tenantid);
  8. }
  9. }
3. 注意问题
   尽管使用接口继承,但是还是会发现部分参数是没法继承的类似 header 解决方法
   调整rest 实现接口方法的签名,如下:

  1. @Override
  2. publicUser getUser(String id,@RequestHeader("tenantid")String tenantid){
  3. // TODO Auto-generated method stub
  4. return userserviceImpl.getUser(id, tenantid);
  5. }
 
  
 

spring cloud feign 接口继承以及参数传递的问题的更多相关文章

  1. Spring Cloud Feign接口返回流

    身无彩凤双飞翼,心有灵犀一点通. 服务提供者 @GetMapping("/{id}") public void queryJobInfoLogDetail(@PathVariabl ...

  2. 第六章:声明式服务调用:Spring Cloud Feign

    Spring Cloud Feign 是基于 Netflix Feign 实现的,整合了 Spring Cloud Ribbon 和 Spring Cloud Hystrix,除了提供这两者的强大功能 ...

  3. Spring Cloud Feign 声明式服务调用

    目录 一.Feign是什么? 二.Feign的快速搭建 三.Feign的几种姿态 参数绑定 继承特性 四.其他配置 Ribbon 配置 Hystrix 配置 一.Feign是什么? ​ 通过对前面Sp ...

  4. Spring Cloud Feign 在调用接口类上,配置熔断 fallback后,输出异常

    Spring Cloud Feign 在调用接口类上,配置熔断 fallback后,出现请求异常时,会进入熔断处理,但是不会抛出异常信息. 经过以下配置,可以抛出异常: 将原有ErrorEncoder ...

  5. Bug集锦-Spring Cloud Feign调用其它接口报错

    问题描述 Spring Cloud Feign调用其它服务报错,错误提示如下:Failed to instantiate [java.util.List]: Specified class is an ...

  6. Spring Cloud Feign 如何使用对象参数

    概述 Spring Cloud Feign 用于微服务的封装,通过接口代理的实现方式让微服务调用变得简单,让微服务的使用上如同本地服务.但是它在传参方面不是很完美.在使用 Feign 代理 GET 请 ...

  7. 笔记:Spring Cloud Feign Hystrix 配置

    在 Spring Cloud Feign 中,除了引入了用户客户端负载均衡的 Spring Cloud Ribbon 之外,还引入了服务保护与容错的工具 Hystrix,默认情况下,Spring Cl ...

  8. 笔记:Spring Cloud Feign 声明式服务调用

    在实际开发中,对于服务依赖的调用可能不止一处,往往一个接口会被多处调用,所以我们通常会针对各个微服务自行封装一些客户端类来包装这些依赖服务的调用,Spring Cloud Feign 在此基础上做了进 ...

  9. 笔记:Spring Cloud Feign 其他配置

    请求压缩 Spring Cloud Feign 支持对请求与响应进行GZIP压缩,以减少通信过程中的性能损耗,我们只需要通过下面二个参数设置,就能开启请求与响应的压缩功能,yml配置格式如下: fei ...

随机推荐

  1. WPF:自定义ListBox的选择样式

    首先介绍一种简单地方法:就是通过自定义SystemColors类的参数来自定义WPF ListBox选择颜色的, SystemColors的HighlightBrushKey和HighlightTex ...

  2. customs event

    // First create the event var myEvent = new CustomEvent("userLogin", { detail: { username: ...

  3. C#使用Docx操作word文档

    C#使用Docx编写word表格 最近接手了一个小Demo,要求使用Docx,将Xml文件中的数据转换为word文档,组织数据形成表格. 写了已经一周,网络上的知识太零碎,就想自己先统计整理出来,方便 ...

  4. rsync的服务端和客户端搭建

    首先要看看有没有rsync,没有就按装一个rsync 1配置文件 然后创建rsyncd.conf文件,并添加如下内容(文件默认不存在) [root@chensiqi2 backup]# cat /et ...

  5. HDU 5793 A Boring Question (找规律 : 快速幂+乘法逆元)

    A Boring Question Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  6. 通过网页或Serverice远程系统网站(服务)所在服务器本地的应用程序(未成功)

    近日接了一个奇葩需求,内容如题. 实现过程中遇到一些问题,特将实现过程记录于此,供备忘及参考. 首先尝试了正常启动进程的方法,代码如下: public string RunSPApp() { Proc ...

  7. LeetCode OJ:Maximal Rectangle(最大矩形)

    Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing all ones and ...

  8. L146 Space Station Hole Cause Will Be Determined

    The head of the U.S. space agency said Tuesday he's sure that investigators will determine the cause ...

  9. 记一次GreenPlum性能调优

    在部署了的GreenPlum集群中进行数据查询时,发现数据量一旦大了,查询一跑就中断,提示某个segment中断了连接. ERROR 58M01 "Error on receive from ...

  10. CSS 清除浮动 clear 属性

    CSS 清除浮动 clear 属性用于设定元素哪一侧不允许有其他浮动元素(而并非取消元素的浮动). 可能的取值如下: 取值 说明 none 默认值,允许两侧都有浮动元素 left 左侧不允许有其他浮动 ...