一、OpenFeign是什么?

可以用来替换ribbon+restTemplate(以对象调用方法的方式去调用服务)
OpenFeign是Spring Cloud在Feign的基础上支持了SpringMVC的注解,如@RequesMapping等等。OpenFeign的@Feignclient可以解析SpringMVc的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。

二、OpenFeign的快速使用

1.在消费者端引入依赖

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

2.主启动添加@EnableFeignClients

package per;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.cloud.netflix.ribbon.RibbonClients;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
import ribbon.RandonRuleConfig;@SpringBootApplication
@RibbonClients(value = {@RibbonClient(name = "stock-service",configuration = RandonRuleConfig.class)}) //配置负载均衡策略
@EnableFeignClients //使用openfeign后无需RestTemplate
public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class,args);}//    @Bean
//    @LoadBalanced // 负载均衡器注解,nacos的服务调用依赖于负载均衡(nacos无法将服务名称转化为服务地址,需要使用负载均衡器,默认使用轮询的方式)
//    public RestTemplate restTemplate(RestTemplateBuilder builder){
//        RestTemplate RestTemplate = builder.build();
//        return RestTemplate;
//    }
}

3.创建业务类(逻辑层)

package per.pz.openfeign;import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;/*** name指定服务提供者端的服务名* path指定服务提供者端所在的Controller层指定的RequestMapping*/@FeignClient(name = "stock-service",path = "/stock")
public interface StockFeignService {//声明需要调用的rest接口对应的方法@RequestMapping("/reduct")String reduct();
}/** 服务提供者端controller的代码@RestController@RequestMapping("stock")public class stockController {//读取配置文件中的端口@Value("${server.port}")String port;@RequestMapping("/reduct")public String reduct(){System.out.println("扣减库存");return "扣减库存111"+port;}}*/

4.服务消费者调用

package per.pz.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import per.pz.openfeign.StockFeignService;@RestController
@RequestMapping("order")
public class oderController {
//    @Autowired
//    RestTemplate RestTemplate;@AutowiredStockFeignService StockFeignService;@RequestMapping("/add")public String add(){System.out.println("下单成功");
//       服务间的通讯,没有使用微服务的方式
//        方法的缺点是在代码中写死服务地址,所以使用注册中心解决
//        String msg = RestTemplate.getForObject("http://localhost:8021/stock/reduct",String.class);
//        nacos服务调用,无需使用地址,使用服务名称即可
//        String msg = RestTemplate.getForObject("http://stock-service/stock/reduct",String.class);//openfeign代替RestTemplateString msg = StockFeignService.reduct();return "下单成功111"+msg;}
}

openfeign的快速使用相关推荐

  1. SpringCloud实战与原理---快速入门

    SpringCloud实战与原理 第一章  快速入门 1. 初始化工程 2. 启动Eureka注册中心 2.1 Eureka注册中心启动代码 2.2 启动Eureka注册中心 3. 注册Eureka客 ...

  2. JeecgBoot 单体升级微服务快速方案(十分钟搞定)

    JeecgBoot 单体升级微服务方案(十分钟搞定) 当前系统分为system.demo 等模块,现有需求把每个模块单独启动作为微服务应用,故而推出新版boot[20200812beta],支持快速切 ...

  3. springboot+openFeign+nacos+seata开发实战

    本文来编写一个程序实例说下seata的使用,使用的分布式环境是openFeign整合nacos.如何想要使用dubbo整合nacos也是同样的道理,只要注意openFeign和dubbo在使用上的细微 ...

  4. SpringCloud快速上手

    微服务介绍 SpringCloud介绍 Eureka服务注册与发现 Eureka如何管理服务调用 服务续约.下线.剔除 Eureka和Zookeeper区别 搭建Eureka服务 服务注册 客户端负载 ...

  5. Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)十六(商品排序,Thymeleaf快速入门,商品详情页的展示)

    Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)十六(商品详情页的展示) 一.商品排序 1.完善页面信息 这是用来做排序的,默认按照综合排序 ...

  6. SpringCloud五大神兽快速入门

    Spring Cloud 单一应用架构 :主要解决ORM 数据库访问层. 垂直应用架构 : 解决分层问题,实现应用的分层开发,提升开发效率. 分布式应用架构:解决系统间调用问题,引发了SOA(面向服务 ...

  7. Spring Boot+Eureka+Spring Cloud微服务快速上手项目实战

    说明 我看了一些教程要么写的太入门.要么就是写的太抽象.真正好的文章应该是快速使人受益的而不是浪费时间.本文通过一个包括组织.部门.员工等服务交互的案例让刚接触spring cloud微服务的朋友快速 ...

  8. SpringCloud04-Ribbon、OpenFeign、Hystrix

    SpringCloud04 Ribbon负载均衡服务调用 一.Ribbon 二.Ribbon的负载均衡和Rest调用 pom RestTemplate的使用 三.Ribbon负载规则 四.Ribbon ...

  9. SpringCloud快速入门(基于狂神讲解)

    SpringCloud学习笔记 一.学习前言 1.1.学习前提 熟练使用SpringBoot 微服务快速开发框架 了解过Dubbo + Zookeeper 分布式基础 电脑配置内存不低于8G(建议16 ...

最新文章

  1. 卸载 流程_「工具」Windows 卸载软件,这一个就够了
  2. VS2010 SQL Server 2005 Database Project 使用笔记(二)
  3. select下拉框赋值和取值
  4. openstack icehouse版本glance上传镜像
  5. 微软觊觎LinkedIn算法
  6. babel6和babel7中关于polyfill和preset-env和babel-plugin-transform-runtime等总结
  7. html兼容webki,评IE10对HTML5的完美支持
  8. 如何同时让多台服务器安装系统,如何同时安装多台服务器?
  9. 2019交通顶级期刊_2019年顶级11面试准备书
  10. Java新职篇:声明一个变量
  11. GoDaddy Linux主机支持机房的更换
  12. Mac 下更新 .bash_profile 文件
  13. 进程状态-Linux ps命令详细参数
  14. div并排排列的两种方法浅谈。
  15. 数据可视化基本套路总结
  16. 自动采集收录导航源码
  17. hDC转PostScript转PDF
  18. 【毕业设计_课程设计】基于机器视觉的智能快递分拣系统
  19. 鸡得传染性鼻炎怎么治疗 鸡打喷嚏脸肿喂什么药
  20. 获取米家设备token

热门文章

  1. Django 实现搜索结果分页(筛选结果分页),以及优雅添加多个筛选条件
  2. 微积分基本定理:微分符号与积分符号是逆运算
  3. 分享个免费的货币汇率API
  4. vue怎么vw布局好用_Vue 实现 rem 布局或vw 布局的方法_晴枙_前端开发者
  5. 关于(求和符号∑)不可不知的事情
  6. Scrapy爬虫框架,爬取小说网的所有小说
  7. 关于跨境电商你了解多少!我们应该怎么做跨境电商?(中)
  8. Linux 命令 poll 和 ppoll 详解 + 实例
  9. Seaweedfs的安装和使用--研究
  10. [Jule CTF 2022] 部分WP