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. JSP 发送邮件

    JSP 发送邮件 虽然使用JSP实现邮件发送功能很简单,但是需要有JavaMail API,并且需要安装JavaBean Activation Framework. 在这里下载最新版本的 JavaMa ...

  2. linux禁止ping

    1.临时禁止PING操作的命令为:#echo 1>/proc/sys/net/ipv4/icmp_echo_ignore_all 2.永久禁止PING配置方法 /etc/sysctl.conf  ...

  3. 1-15-1 RAID磁盘阵列的原理和搭建

    大纲: 1.1-1-企业级RAID磁盘阵列 RAID磁盘阵列的原理 RAID0,1,5,10的搭建 硬件RAID卡 1.2-1-使用廉价的磁盘搭建RAID磁盘阵列 实战-配置RAID0带区卷 ==== ...

  4. c++复习要点

    自增和自减运算符有前缀和后缀两种形式,都会改变对象,所以不能对常量对象操作. 前缀形式返回改变后的对象,返回*this. 后缀形式返回改变之前的值,所以必须创建一个代表这个值的独立对象并返回它,是通过 ...

  5. Maven 中的dependencies与dependencyManagement的区别

    1.dependencyManagement 在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器 在pom.xml文件中,jar的版本判断的 ...

  6. 四、dbms_alert(用于生成并传递数据库预警信息)

    1.概述 作用:用于生成并传递数据库预警信息.使用包DBMS_ALERT,则必须以SYS登陆,为该用户授予执行权限.sql>conn sys/oracle as sysdbasql>gra ...

  7. L158

    It started out modestly enough: David Hertz, having learned that under the right conditions you real ...

  8. iOS 阶段学习第四天笔记(循环)

    iOS学习(C语言)知识点整理笔记 一.分支结构 1.分支结构分为单分支 即:if( ){ } ;多分支 即:if( ){ }else{ }  两种 2.单分支 if表达式成立则执行{ }里的语句:双 ...

  9. XML 测验

    测试地址http://www.w3school.com.cn/quiz/quiz.asp?quiz=xml 1.XML指的是? 您的回答:eXtensible Markup Language 2.XM ...

  10. Spring核心概念(二)

    IOC/DI IOC(控制反转):对象(组件)的创建由代码中转移到外部容器(XML,注解) . DI(依赖注入):当类A需要使用类B时,那么我们需要为类A的属性赋值类B的对象. 这种现象我们称为依赖注 ...