YourBatman
也许当我老了,也一样写代码。不为别的,只为了爱好。
展开
-
[享学Feign] 二、原生Feign的注解介绍及使用示例
通过第一篇文章了解了Feign的最基础知识,作为一个有态度的程序员,我们势必要搞清楚它整个执行的脉络,了解它的执行过程和原理才算结束,这是最后最后最后进行个性化定制的基础,一切都为了“玩”嘛。本文将讲解它原生支持的注解,毕竟Feign并不强依赖于Spring MVC,在Java环境也是可以作为HC来使用的,了解起来不难,建议你掌握。原创 2020-02-10 21:08:49 · 3733 阅读 · 0 评论 -
[享学Feign] 一、原生Feign初体验,Netflix Feign or Open Feign?
说到HTTP客户端,大家都不会感到陌生。Java自己源生的就有`java.net`包下的`HttpURLConnection`(虽然不太好用),同时优秀的开源产品更是百花齐放:- Apache HttpClient- OkHttp- Spring的RestTemplate - 说明:它基于以上三种Client做的包装- Feign(本专栏详述)JDK源生的偏于底层且不好用,在Java9之前你几乎可以忽略它;作为老牌的`Apache HttpClient`凭借着各种优秀特征,似乎已成为了事实的标原创 2020-02-09 21:40:38 · 6413 阅读 · 9 评论 -
[享学Feign] 十二、Feign通过feign-hystrix模块使其拥有熔断、降级能力
在微服务场景中,通常会有**很多层**的服务调用。如果一个底层服务出现问题,故障会被向上传播给用户。因此我们需要一种机制,**当底层服务不可用时,可以阻断故障的传播**。这就是断路器的作用,他是系统服务稳定性的最后一重保障。熔断器产品流行的有`Hystrix`,以及阿里开源的`Sentinel`和受netflix启发专为Java8函数式编程设计的轻量级容错框架`Resilience4J`。很显然,本文只会讲解`hystrix`和Feign的集成使用,毕竟同根的产品,融合起来会更加的简单高效些。原创 2020-03-09 21:04:48 · 3187 阅读 · 1 评论 -
[享学Feign] 十一、Feign通过feign-slf4j模块整合logback记录日志
作为一个程序员,说到日志的重要性,怎么强调都不过分。然而每个流行框架都有它内置使用的日志库,比如:Spring使用`commons-logging`(这是Spring的唯一**强外部依赖**,其它的依赖均非强制)记录日志。Feign它自己提供了一个日志抽象`feign.Logger`用于记录日志,它并不限于具体底层实现。它内部提供了基于`java.util.logging.Logger`以及`System.err`的**基础实现**,那么很显然生产上不可能使用它们来实现日志打印。本文将介绍Feign原创 2020-02-15 20:45:22 · 3268 阅读 · 0 评论 -
[享学Feign] 十、Feign通过feign-jackson模块天然支持POJO的编码和解码
上文介绍了Feign的Client相关模块,体验到Feign核心内容的高扩展性同时,亦能明显感觉到其子模块其实为对**Feign核心功能**的延伸,让其更能适应复杂的生产环境要求。本文将介绍它的另一个实用模块:`feign-jackson`。它能解决我们平时工作中非常大的一个痛点:Feign只能编码/解码字符串类型的数据。有了它便能使得我们编码更加的面向对象,对Feign的内部处理细节更加无感~原创 2020-02-15 11:57:05 · 3596 阅读 · 0 评论 -
[享学Feign] 九、Feign + OkHttp和Feign + Apache HttpClient哪个更香?
前八篇文章介绍完了feign-core核心内容,从本篇开始将介绍它的“其它模块”。其实核心模块可以独立的work,但是不免它的能力偏弱,比如只能编码字符串类型、只能解码字符串类型,默认使用`java.net.HttpURLConnection`作为HC...本篇将介绍它的第一个模块:Client相关模块。我们知道,流行的开源Http库的性能均远高于JDK源生的`HttpURLConnection`,因此实际生产中**肯定是**用的三方库来发送Http请求。Feign它提供了`feign.Client原创 2020-02-14 22:10:49 · 8680 阅读 · 0 评论 -
[享学Feign] 八、Feign是如何生成接口代理对象的?Feign实例的构建器Feign.Builder详解
一步步稳扎稳打,终于到了该研究平时接触的API:`feign.Feign`本身。`feign.Feign`它是最上层的API,是使用者直接使用的对象,它能完成对接口生成动态代理对象,从而很方面的让你面向接口编程,而不用太过例会Feign内部的实现细节。如果说前面7篇都是在打基础,那么它们均是在帮你理解这篇的内容服务。那么作为最重要的一步:**生成接口代理对象**有何内幕?以及平时我们用于构建Feign的构建器`Feign.Builder`有何文章可循,本篇文章将彻底为你揭秘,帮你完整掌握Feign的核原创 2020-02-13 23:47:56 · 3065 阅读 · 1 评论 -
[享学Feign] 七、请求模版对象RequestTemplate和标准请求对象feign.Request
通过前几篇文章,能够发现有个对象我们会频繁打交道,它就是Feign的请求模版对象`RequestTemplate`。`feign.template.Template`以及它的4个子模版都已经了解过了,体会到了模版设计的**高扩展性和高弹性**。而此处的`RequestTemplate`稍有不同,可以理解它是一个聚合,聚合有多种模版、参数、值从而提供转向标准请求对象`feign.Request`的能力。我们知道一个简单的实例方法`RequestTemplate#request()`就完成了模版对标准请原创 2020-02-13 18:00:58 · 9658 阅读 · 1 评论 -
[享学Feign] 六、原生Feign的解码器Decoder、ErrorDecoder
上篇文章介绍了Feign的编码器Encoder,本篇继续了解它的解码器`Decoder`,以及错误解码器`ErrorDecoder`。编码器作用于Request,那么解码器作用于Response,用于解析Http请求的响应,提取有用信息数据。原创 2020-02-13 01:12:17 · 8750 阅读 · 2 评论 -
[享学Feign] 五、原生Feign的编码器Encoder、QueryMapEncoder
编码和解码的概念最初是出现在硬件范畴,最后引申到软件领域,它和加密、解密很多时候是一组同义词。下面这段解释摘抄自百科: - 编码器:将信号(如比特流)或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。 - 功能:转换信号形式- 解码器:是一种能将数字视音频数据流解码还原成模拟视音频信号的硬件/软件设备。很多框架都存在着编码、解码动作,Feign也不例外。本专栏将连续花两篇文章,就专注于讲解Feign的编码器`Encoder`、解码器`Decoder`,以及它们是如何工作的,它对后续理解原创 2020-02-13 00:21:21 · 4846 阅读 · 1 评论 -
[享学Feign] 四、原生Feign的核心API详解(二):Contract、SynchronousMethodHandler...
本文接着上篇文章,接着介绍Feign的核心API部分。革命尚未统一,同志仍需努力。虽然核心API不可能100%全部讲到,但大部分均已cover,对后续的学习几无障碍,欢迎一起来造...原创 2020-02-12 10:49:02 · 2542 阅读 · 0 评论 -
[享学Feign] 三、原生Feign的核心API详解(一):UriTemplate、HardCodedTarget...
前两篇文章站在使用的角度介绍了源生Feign,相信读过的话都知道如何使用了。那么接下来就要动动真格,扒开内裤看看里面到底是什么东西。本文将着重了解Feign的核心API,有点像啃API、啃源码的意思,所以可能相对枯燥、难懂,所以需要坚持。因为学习起来虽然枯燥,但意义却是巨大的,正所谓“上天不会亏待努力的人,也不会同情假勤奋的人”。原创 2020-02-11 21:59:02 · 2928 阅读 · 0 评论