项目地址:

github地址

1.在公共引用项目debugggcloud_api项目加入引用Feign的支持

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-feign</artifactId></dependency>

2.在消费者项目里面加入该引用

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-feign</artifactId></dependency>

3.在公共引用项目创建DeptClientService接口类

package com.debuggg.cloud.service;import com.debuggg.cloud.entities.Dept;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;import java.util.List;@FeignClient(value = "DEBUGGGCLOUD-DEPT")
public interface DeptClientService {@RequestMapping(value = "/dept/get/{id}",method = RequestMethod.GET)public Dept get(@PathVariable("id") long id);@RequestMapping(value = "/dept/list",method = RequestMethod.GET)public List<Dept> list();@RequestMapping(value = "/dept/add",method = RequestMethod.POST)public boolean add(Dept dept);
}

注意接口上面的@FeignClient(value="DEBUGGGCLOUD-DEPT"),此处需要该注解

4.将消费者项目里面的DeptConsumerController的代码的调用方式由RestTemplate的调用方式修改为DeptClientService调用方式调用

原来代码:

package com.debuggg.cloud.controller;import com.debuggg.cloud.entities.Dept;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;import java.util.List;@RestController
public class DeptConsumerController {//    private static final String PREFIX = "http://localhost:8001/";private static final String PREFIX = "http://DEBUGGGCLOUD-DEPT";@Autowiredprivate RestTemplate restTemplate;@RequestMapping(value = "/consumer/dept/list")public List<Dept> list(){return restTemplate.getForObject(PREFIX + "/dept/list", List.class);}@RequestMapping(value = "/consumer/dept/get/{id}")public Dept get(@PathVariable("id") Long id){return restTemplate.getForObject(PREFIX + "/dept/get/" + id, Dept.class);}@RequestMapping(value = "/consumer/dept/add")public Boolean add(Dept dept){return restTemplate.postForObject(PREFIX + "/dept/add" ,dept, Boolean.class);}//测试@EnableDiscoveryClient,消费端可以调用服务发现@RequestMapping(value="/consumer/dept/discovery")public Object discovery(){return restTemplate.getForObject(PREFIX+"/dept/discovery", Object.class);}
}

修改后代码:

package com.debuggg.cloud.controller;import com.debuggg.cloud.entities.Dept;
import com.debuggg.cloud.service.DeptClientService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;import java.util.List;@RestController
public class DeptConsumerController {@Autowiredprivate DeptClientService service = null;@RequestMapping(value = "/consumer/dept/list")public List<Dept> list(){return this.service.list();}@RequestMapping(value = "/consumer/dept/get/{id}")public Dept get(@PathVariable("id") Long id){return this.service.get(id);}@RequestMapping(value = "/consumer/dept/add")public Boolean add(Dept dept){return this.service.add(dept);}
}

5.在启动类加入注解@EnableFeignClients

package com.debuggg.cloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients(basePackages= {"com.debuggg.cloud"})
public class DeptConsumer10001_App {public static void main(String[] args) {SpringApplication.run(DeptConsumer10001_App.class,args);}
}

启动测试

8.Springcloud的Feign嵌入Ribbon实现接口式调用(改变restTemplate和Ribbon的调用方式)...相关推荐

  1. springcloud 实战 feign使用中遇到的相关问题

    springcloud 实战 feign使用中遇到的相关问题 1.使用feign客户端调用其他微服务时,session没有传递成功,sessionId不一样. /*** @author xbchenf ...

  2. SpringCloud与Feign

    SpringCloud只Feign如何实现负载均衡: 简介 Feign是一个声明式WebService客户端.使用Feign能让编写Web Service客户端更加简单, 它的使用方法是定义一个接口, ...

  3. Spring全家桶——SpringCloud之Feign(Finchley版)

    Feign是一个声明式的Web服务客户端. 是什么? 例如我在一个服务的interace上注解@FeignClient(value = "eureka-client") 就是声明服 ...

  4. SpringBoot+SpringCloud —— 使用Feign消费服务

    转自:https://www.cnblogs.com/yimixiong/p/7927991.html 转:SpringBoot+SpringCloud -- 使用Feign消费服务 Feign简介 ...

  5. 文件上传结合SpringCloud的Feign进行服务调用

    工作中一直使用的是SpringCloud,其中的多个组件的使用也已经有一段时间了,包括对组件的配置文件的编写,今天要讲的是SpringCloud中的一个远程服务调用的组件,使用Feign之后,我们调用 ...

  6. SpringCloud 中Feign原理(图解)

    1 SpringCloud 中Feign原理 1.1 Feign简介 Feign是Netflix公司开源的轻量级rest客户端,使用Feign可以非常方便的实现Http 客户端.Spring Clou ...

  7. springcloud(七)-Feign声明式REST调用

    前言 前面我们使用的RestTemplate实现REST API调用,代码大致如下: public User findById(@PathVariable Long id) {return restT ...

  8. SpringCloud学习笔记(6)----Spring Cloud Netflix之负载均衡-Ribbon的使用

    1. 什么是负载均衡? 负载均衡,就是分发请求流量到不同的服务器. 负载均衡一般分为两种 1. 服务器端负载均衡(nginx) 2. 客户端负载均衡(Ribbon) 2. 服务提供者(spring-c ...

  9. springcloud feign 服务调用其他服务_微服务实战——SpringCloud与Feign集成

    上一篇集成了ZuulGateway和Eureka并进行了测试.在实际场景中,我们肯定会有很多的微服务,而他们之间可能会存在相互调用的关系,那么,如何优雅的处理服务之间的调用问题呢?接下来就是我们要解决 ...

最新文章

  1. scala学习手记34 - trait方法的延迟绑定
  2. 2019 GDCPC or HDU6540 树形dp[计数dp] 详解
  3. 步进电机的单双极驱动
  4. ir指令、立即数的作用_立即数的判断方法一
  5. Python自动化运维——DNS处理模块
  6. SpringBoot使用Slf4j+Log4j2完成项目的日志记录
  7. python数据分析课程哪个好-数据分析课程里面,python是重点!
  8. mysql5.7 至少需要1560,mysq5.7.28配置innodb_page_size错误引起的错误1071(42000)
  9. 20165313 课程总结
  10. 前端flv.js设置缓冲时间和大小_好程序员web前端细解cookie那些事
  11. 8.线性回归之非线性回归
  12. Android开发笔记之SeekBar 时间的显示 快进快退 Mediaplayer
  13. ubuntu 12.04中搭建nfs服务器
  14. 使用vue-print-nb打印element table时表格打印不全的问题
  15. 【c语言进阶】大家是否对数据的存储不甚了解?本篇将揭开数据存储的神秘面纱*^____^*数据的存储(一)知识点讲解
  16. U盘和电脑USB都是好的,可是插上u盘没任何反应!
  17. sublimeText3编辑器使用大全
  18. HTML5 视频直播那些事儿+吕小鸣博客
  19. 倾斜摄影三维模型、激光点云、正射影像、数字高程模型如何实现在线浏览?
  20. 如何解决个人信息泄露问题

热门文章

  1. Pandas 数据框增、删、改、查、去重、抽样基本操作
  2. 英魂之刃显示已将战斗服务器,英魂之刃战略版来袭,是挂名游戏还是搞事情?玩家:过于真实!...
  3. Maven学习总结(51)——Maven 常用属性和常量说明
  4. Redis学习总结(4)——Spring Data操作Redis
  5. Java基础学习总结(67)——Java接口API中使用数组的缺陷
  6. Java基础学习总结(38)——Lombok(消除冗长的 java 代码)的使用和原理及安装、入门使用
  7. Java Web学习总结(4)——HttpServletResponse对象入门
  8. php小小通讯录,2009年小学信息技术优质课一等奖教学设计四上《小小通讯录》...
  9. JS中的类,类的继承方法
  10. 自定义导航栏的背景、标题、返回按钮文字颜色[转]