SpringCloud(三)- OpenFeign简介及@FeignClient等注解的使用
唯能极于情,故能极于剑
本文转载于:http://www.codecow.cn/
此文由四部分组成(OpenFeign简介、@FeignClient 使用、实操、总结),别着急,慢慢来
文章目录
- 一、OpenFeign
- 1.1、OpenFeign 啥玩意 ?:
- 1.2、OpenFeign 能干嘛 ? :
- 1.3、OpenFeign 怎么玩 ? :
- 二、OpenFeign 实操
- 2.1、服务端 -- 操作
- 2.1、客服端 / 消费端 -- 操作
- 三、总结
一、OpenFeign
1.1、OpenFeign 啥玩意 ?:
- 官网:Feign 是一个声明式的Web服务客户端,让编写Web服务客户端变得非常容易,只需 创建一个接口并在接口上添加注解 即可
1.2、OpenFeign 能干嘛 ? :
小编就不多 BB 先来张图 压压惊
这图不难理解:客服端调用服务端有两种方式 ribbon + restTemplate 或 Openfeign;
但是:在我们实际开发当中,往往 一个接口会被多处调用,所以通常都会针对每个微服务自行封装一些客服端类来包装这些依赖服务的调用 ;所以,OpenFeign在此基础上做了进一步封装,由他来帮助我们实现依赖服务接口的定义。
因此:需要我们做的非常简单,我们只需要创建一个接口并使用注解的方式来配置他,即可完成对服务提供方的接口绑定。
1.3、OpenFeign 怎么玩 ? :
来两个 好男人 必备网站, 哈哈
官网:cloud.spring.io/spring-cloud-static/Hoxton.SR1/reference/htmlsingle/#spring-cloud-openfeign(贼 慢。。。。)
GitHub:https://github.com/spring-cloud/spring-cloud-openfeign (还好,一般般)
二、OpenFeign 实操
了解OpenFeign 了,不来点 硬核 咋行呢,下面小编就结合实际开发和大家聊聊
注意:有服务端和客户端两个模块/项目
2.1、服务端 – 操作
①、首先导包
<!--监控 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--服务注册与发现 consul--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency>
②、改 YML 配置文件
server:port: 8006 //端口号spring:application:name: cloud-payment-service //服务名cloud:consul:host: localhost //consul的IPport: 8500 //consul启动端口默认8500discovery:service-name: ${spring.application.name}prefer-ip-address: true //不写这个配置,在docker下的consul里面健康检查会失败healthCheckInterval: 5s //健康检查频率port: ${server.port} //注册服务所在端口
③、添加主启动类
@SpringBootApplication // springboot 注解
@EnableDiscoveryClient //作用:能够让注册中心发现,并扫描到该服务
public class ProvideMain8006 {public static void main(String[] args) {SpringApplication.run(ProvideMain8006.class, args);}
}
④、业务逻辑Controller
@RestController
@Slf4j
public class PaymentController {@Resourceprivate PaymentService paymentService;@GetMapping("/payment/get/{id}")public RespResult<Payment> getPaymentById(@PathVariable("id") Integer id) {Payment payment = paymentService.getById(id); //getById 是serviceImpl中根据id 获取 payment 实体的方法, 小编在这就不赘述了log.info("查询结果为:" + payment);if (payment != null) {return RespResult.success(payment); // RespResult 是小编自己封装的返回结果,不懂可以问小编} else {return new RespResult<>(444, "查询为空");}}
}服务端就完事了:自测:url : http://localhost:8006/payment/get/1结果 :{"code":200,"message":"成功","data":{"id":1,"desc":"98K"}}解释 :Payment 实体就两个字段 id、desc, 通过结果可以知道 RespResult 是啥了吧经过 小编一顿 SAO 操作, 服务端 还可以吧 ^ _ ^
2.1、客服端 / 消费端 – 操作
注意:消费端大体和客服端一样,注意细节 O ^ _ ^
①、首先导包
<!--监控 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--服务注册与发现 consul--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency><!--服务调用 openFeign--> // 朋友:包其实就比服务端多一个 openFeign<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>
②、改 YML 配置文件
server:port: 80 //端口号 浏览网页服务默认的端口号都是80,因此只需输入网址即可,不用输入“: 80”了spring:application:name: cloud-order-service //服务名cloud:consul:host: localhost //consul的IPport: 8500 //consul启动端口默认8500discovery:service-name: ${spring.application.name}prefer-ip-address: true //不写这个配置,在docker下的consul里面健康检查会失败healthCheckInterval: 5s //健康检查频率port: ${server.port} //注册服务所在端口ribbon: // 此配置和 OpenFeign 超时控制 有关, 小编在这就不多赘述了,有想了解,直接给小编留言ReadTimeout: 5000 //请求处理的超时时间 5秒ConnectTimeout: 3000 //请求连接的超时时间 3秒logging: // 此配置和 OpenFeign 打印日志级别有关level:top.msxdlb.springcloud.service.OrderService: debug //日志打印级别
③、添加主启动类
@SpringBootApplication // springboot 注解
@EnableDiscoveryClient //作用:能够让注册中心发现,并扫描到该服务
@EnableFeignClients //服务调用 注解
public class ConsumerMain80 {public static void main(String[] args) {SpringApplication.run(ConsumerMain80.class);}
}
④、业务逻辑 Service
/**
* 此类作用: 不懂看 最上面 OpenFeign 是啥玩意?
* OpenFeign 能干嘛?
*/
@Component
@FeignClient("cloud-payment-service") //里面是服务端的 服务名(yml 文件中)
public interface PaymentService{@GetMapping("/payment/get/{id}")public RespResult<Payment> getPaymentById(@PathVariable("id") Integer id);
}
⑤、业务逻辑 Controller
@RestController
@Slf4j
public class PaymentController {/*** 使用 Feign 方式调用*/@Resourceprivate PaymentService paymentService; // 注入 service 中 通过 @FeignClient 定义好的接口@GetMapping("/feign/payment/get/{id}")public RespResult<Payment> getPayment(@PathVariable("id") Integer id) {log.info("<<<<<<<<<<< 我是通过feign >>>>>>>>>>>>");return paymentService.getPaymentById(id);}
}消费端也完事了:总测试步骤:1、启动服务端2、启动消费端3、地址栏输入url: http://localhost/feign/payment/get/1 // 为什么不加端口号(回去看 消费端 Yml 配置 有说明)4、结果:如果结果为:{"code":200,"message":"成功","data":{"id":1,"desc":"98K"}} 就是和服务端自测结果一样,恭喜你 成功了如果你 有幸看到这里:咋青山不改,绿水长流,不妨看看小编其他作品,很香哟, 呵呵
第二步OpenFeign 实操总结: 其实就两点:
①、在消费端启动类加:@EnableFeignClients 注解
②、在业务逻辑 Service 接口加: @FeignClient 注解 即可
朋友,这顿 SAO 操作 还可以吧,哈哈,加油 ^ _ ^
三、总结
这是 SpringCloud 的 OpenFeign 篇,后续小编会从 “Hystrix、Gateway …” 等坚持以博客的方式来分享自己对SpringCloud 的理解,并从不同角度和大家分享工作心得,并且含有相关Demo,最终小编会发布到GitHub上,供大家下载、分享、交流、指正,下面是源码地址:
GitHub:https://github.com/msxdlb/Spring-Cloud-2020
有问题或错误请及时联系小编或关注小编公众号 “CodeCow”,小编一定及时回复和改正 啦
《 心有多大,舞台就有多大 》 人得有——理想
2020/04/16 午后
SpringCloud(三)- OpenFeign简介及@FeignClient等注解的使用相关推荐
- Springboot + SpringCloud + Nacos + OpenFeign + Gateway
Springboot + SpringCloud + Nacos + OpenFeign + Gateway 根节点相关依赖 <parent><groupId>org.spri ...
- SpringCloud(三):监控中心 hystrix turbine
SpringCloud(三):监控中心 hystrix turbine 1.介绍 Hystrix-dashboard是一款针对Hystrix进行实时监控的工具,通过Hystrix Dashboard我 ...
- ML之FE:数据处理—特征工程之数据集划分成训练集、验证集、测试集三部分简介、代码实现、案例应用之详细攻略
ML之FE:数据处理-特征工程之数据集划分成训练集.验证集.测试集三部分简介.代码实现.案例应用之详细攻略 目录 数据集划分成训练.验证.测试三种数据的简介 1.训练集.验证集的作用 2.验证数据集 ...
- MOOS-ivp 实验三 MOOS简介(3)
MOOS-ivp 实验三 MOOS简介(3) 继上一篇文章继续对实验进行记录 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 MOOS-ivp 实验三 MOOS简介(3) ...
- MOOS-ivp 实验三 MOOS简介(1)
MOOS-ivp 实验三 MOOS简介(1) 实验三主要包含三个实验目标: 1.moos发布-订阅结构体系 2.启动MOOSDB并且进行交互 3.日志记录器的运行与生成 文章目录 MOOS-ivp 实 ...
- 数字逻辑电路(前三章简介)
数字逻辑电路(前三章简介) 第一章 数字逻辑基础 1.码制 BCD码 格雷码 ASCll码奇偶校验码 2.逻辑运算 与,或,非,与非,或非,与或非,异或,同或. 3.基本公式 0-1律,互补律,还原律 ...
- MOOS-ivp 实验三 MOOS简介(2)
MOOS-ivp 实验三 MOOS简介(2) 继上一篇文章继续对实验进行记录 文章目录 MOOS-ivp 实验三 MOOS简介(2) 四.Launching a Mission with pAntle ...
- 我国民用高分辨率光学传输型立体测图卫星-资源三号简介(文末附带示例数据)
我国民用高分辨率光学传输型立体测图卫星-资源三号简介 目前资源三号由资源三号01星和资源三号02星组成: 资源三号01星(ZY3-01)是我国首颗民用高分辨率光学传输型立体测图卫星,于2012年1月9 ...
- SpringCloud微服务简介(一)
SpringCloud微服务简介(一) Spring Cloud简单认识 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务.这些小 ...
最新文章
- 百度Apollo发布海量自动驾驶数据集,还有两项重磅挑战赛
- 离散化小记,Acwing802. 区间和
- usermod命令的一些用法详解
- 相似图片检测:感知哈希算法之aHash,dHash,pHash的Python实现
- getParameterValues用法
- Python字符串的格式化,看这一篇就够了
- android onscrolllistener判断到底部,android中RecycleView添加下滑到底部的监听示例
- pythonUI---ttk.Treeview使用心得(内含表格形式加垂直水平滚轮方法)
- 局域网共享工具_还在用数据线?快来试试网页版局域网共享工具!
- Linux命令行大全(第二版)
- java resourcebundle_java.util.ResourceBundle使用详解
- 防火墙服务器-iptables
- STM32通过SIM800L向yeelink端上传数据
- 找不到文件“c:/Users/Administrator/Desktop/vue_dom2/node_modules/postcss-discard-overridden/types/index.d.
- 手机网站支付-支付宝API-Python
- 10年程序员私单的经历,送你3个找客户的关键技巧
- CET-4 week9 阅读 写译
- Udacity机器学习入门笔记——数据集与问题
- thinkadmin默认ckeditor富文本配置修改
- 微信小程序取本地数据库数据(实测有图)