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. C++ 线程的创建、挂起、唤醒和结束 &&&& 利用waitForSingleObject 函数陷入死锁的问题解决

    最近在写一个CAN总线的上位机软件,利用CAN转USB的设备连到电脑上,进行数据的传输.在接收下位机发送的数据的时候采用的在线程中持续接收数据. 1.在连接设备的函数中,开启线程. ,CREATE_S ...

  2. HDU-4679-树的直径(树形dp)

    Terrorist’s destroy Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Othe ...

  3. Hibernate入门_增删改查

    一.Hibernate入门案例剖析:  ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private ...

  4. IOS-启动图和开屏广告图,类似网易

    作者:若锦 原文链接:http://www.jianshu.com/p/e52806516139 启动图是在iOS开发过程中必不可少的一个部分,很多app在启动图之后会有一张自定义的开屏广告图,点击该 ...

  5. MySql设计规范及SQL索引优化【呕心之作】

    数据库及表结构基本设计规范 1. 所有表必须使用Innodb存储引擎 没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用Innodb存储引擎(mysql5. ...

  6. ExcelHelper.cs

    using System; using System.IO; using System.Data; using System.Collections; using System.Data.OleDb; ...

  7. C#中Abstract和Virtua笔记,知识

    在C#的学习中,容易混淆virtual方法和abstract方法的使用,现在来讨论一下二者的区别.二者都牵涉到在派生类中与override的配合使用. 一.Virtual方法(虚方法) virtual ...

  8. html表格导出Excel的一点经验心得(转载)

    最近在做统计功能,要求统计结果(表格)既能查看(BS系统,在浏览器查看),又能输出为excel文件.对于输出excel文件,在网上找到n种方案,因为还需查看,最终选择了统计结果输出为table,查看时 ...

  9. Qt实现简单的单例模式

    单例模式十分的常见也很常用,Boost库中就有单例的泛型实现,Qt中,可以利用原子指针来实现一个单例模式: class SingleTon{ public: static SingleTon & ...

  10. MongoDB中MapReduce不同的写法,不同的结果

    MapReduce有两种写法,也可以说mongodb所有的命令行都有两种写法. 但突然间发现MapReduce不同的写法会有不同的结果,接下来我们一起来看: 第一种:直接使用扩展属性. 1)emit函 ...