游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

OpenFeign要被HttpExchange替代了吗?

  前言
  Http是最常见的请求协议,每种编程语言都可发送Http请求。Java作为经典编程语言之一,发送Http请求的客户端更是不少,自己的内置的就有java。net。HttpURLConnection以及Java11以后的java。net。http。HttpClient。在Java11之前,HttpURLConnection很难用,因此市场上百花齐放出现了不少优秀的开源作品,典型代表为:ApacheHttpClient(现最新为HttpComponent5。x)OkHttp(现最新为OkHttp4。x)
  作为老牌的ApacheHttpClient凭借着各种优秀特征,似乎已成为了事实的标准;后起之秀OkHttp不带历史包袱的轻装上路,有着低网络延迟、更优秀的连接池性能,亦是一股不可轻视的力量。
  Spring不到万不得已之时,一般不会自己重复造轮子。在Http客户端这块一样借力打力,提供Http统一调用方式RestTemplate,屏蔽了细节,规范了开发者的使用,简化了开发门槛。
  PS:RestTemplate的底层实现依旧是ApacheHttpClient、OkHttp、HttpURLConnection之一
  以上,都还是编程式Http客户端。随着SpringBoot的普及,SpringCloud的出现,声明式编码变得越来越主流,因为声明式面向元数据编码效率远高于编程式编码效率。因此,Feign出现了,迅速成为了主流。
  今年,随着划时代版本SpringFramework6、SpringBoot3、SpringCloud2022。0。0的发布,Spring团队自建了一套声明式Http客户端:HttpExchange,目标直指OpenFeign。正文
  全新的声明式Http客户端由SpringFramework6提供定义,SpringBoot3提供实现,SpringCloud2022负责发扬光大。今天我们就来体验一把介绍一个免费的、在线的RestHttp服务
  由于我们需要一个提供HttpServer来提供接口服务,为此先给你介绍一个免费的、24h在线的RestHttp服务,省去我们自己搭建的麻烦。
  地址:jsonplaceholder。typicode。com
  每月提供近20亿的请求,关键还是免费的、可公开访问的,好用得不要不要。
  发一个简单的Http请求,就能获取到数据。URL遵循Rest规范:
  不挑Http或者Https,比如使用浏览器访问这个URL得到的结果也是一样的:
  它提供多个Resources资源(以及多种Routes)供以访问,对这些资源进行增删改查的操作,你想要的绝大部分都能满足你。当然,若你需要mockdata是符合自己的数据结构、业务逻辑的,可基于此项目做简单的修改即可,良心项目啊。具体详情自行去官方体验:https:jsonplaceholder。typicode。com。全新声明式Http客户端HttpExchange
  环境声明:SpringBoot3。0。x
  本文选用albums资源进行测试:https:jsonplaceholder。typicode。comalbums的请求结果结构如下:
  Feign代码示例
  略!Feign的使用,相信大家再熟悉不过了,笔者这里就不费周章。HttpExchange代码示例
  按照albums的返回数据结构,写JavaBean:
  复制在此处添加备注信息authorYourBatmansince0。0。1BuilderGetterpublicclassAlbumsReq{NotNullPositiveprivateLonguserId;NotBlankprivateStringtitle;}在此处添加备注信息authorYourBatmansince0。0。1SetterToStringpublicclassAlbumsResp{privateLongid;privateLonguserId;privateStringtitle;}1。2。3。4。5。6。7。8。9。10。11。12。13。14。15。16。17。18。19。20。21。22。23。24。25。26。27。28。29。30。
  顺带科普一个编码规范:请求体Req中get方法是必须的,set方法可选;响应体Resp中set方法是必须的,get方法可选;二者都需遵循JavaBean规范!粗暴的做法是不管需求如何,getset一把梭,可行,但作为程序员的你应该知道原由,理解要义。
  导入webflux包此声明式客户端又SpringFramework6提供,但由于其并未提供实现。SpringBoot3为此提供了基于Reactive的Web实现,因此需要导入webflux包:
  复制dependencygroupIdorg。springframework。bootgroupIdspringbootstarterwebfluxartifactIddependency1。2。3。4。
  编写Http客户端申明式接口。
  复制在此处添加备注信息authorYourBatmansince0。0。1HttpExchange(albums)publicinterfaceAlbumsClient{GetExchangeListgetAll();GetExchange({id})AlbumsRespgetById(PathVariableLongid);PostExchangeAlbumsRespadd(RequestBodyValidAlbumsReqreq);}1。2。3。4。5。6。7。8。9。10。11。12。13。14。15。16。17。18。19。
  书写测试用例代码。
  复制SpringBootTestclassApplicationTests{AutowiredprivateAlbumsClientalbumsClient;TestvoidcontextLoads(){System。out。println(getAllsize:albumsClient。getAll()。size());System。out。println(getById1:albumsClient。getById(1L));创建一个ObjectaddedRespalbumsClient。add(AlbumsReq。builder()。userId(1L)。title(diyadd。。。)。build());System。out。println(创建的allAlbums对象为:addedResp,现在总数为:albumsClient。getAll()。size());}}1。2。3。4。5。6。7。8。9。10。11。12。13。14。15。16。17。18。
  运行测试代码,控制台输出:
  复制getAllsize:100getById1:AlbumsResp(id1,userId1,titlequidemmolestiaeenim)创建的allAlbums对象为:AlbumsResp(id101,userId1,titlediyadd。。。),现在总数为:1001。2。3。
  完美!
  小细节:创建的时候并未制定id,发现id是自增的(id101)。但这并不会保存在typicode。com的远端服务器了,不会引起总条数的变化。HttpExchange声明式客户端简析
  HttpExchange是SpringFramework6新提供的声明式Http客户端,客户端的要素由注解的属性方法签名来定义。先来看看这个注解:
  复制Since:6。0Target({ElementType。TYPE,ElementType。METHOD})Retention(RetentionPolicy。RUNTIME)DocumentedMappingReflective(HttpExchangeReflectiveProcessor。class)publicinterfaceHttpExchange{AliasFor(url)Stringvalue()default;AliasFor(value)Stringurl()default;Stringmethod()default;StringcontentType()default;String〔〕accept()default{};}1。2。3。4。5。6。7。8。9。10。11。12。13。14。15。16。17。
  和RequestMapping参照对比:
  复制Target({ElementType。TYPE,ElementType。METHOD})Retention(RetentionPolicy。RUNTIME)DocumentedMappingReflective(ControllerMappingReflectiveProcessor。class)publicinterfaceRequestMapping{Stringname()default;AliasFor(path)String〔〕value()default{};AliasFor(value)String〔〕path()default{};RequestMethod〔〕method()default{};String〔〕params()default{};String〔〕headers()default{};String〔〕consumes()default{};String〔〕produces()default{};}1。2。3。4。5。6。7。8。9。10。11。12。13。14。15。16。17。18。19。
  不说一毛一样,也是基本一样。HttpExchange注解可以标注在类上和方法上,最终的URL组合起来生效。大家都是使用过Feign、使用过SpringMVC的,这就不用过多介绍了。
  和RequestMapping一样,HttpExchange也有其派生注解:GetExchange:GET请求。类似于于GetMappingPostExchange:Post请求。类似于于PostMappingPutExchange:Put请求。类似于于PutMappingDeleteExchange:Delete请求。类似于于DeleteMappingPatchExchange:Patch请求。类似于于PatchMappingHttpExchange声明式客户端前景展望
  通过interface这种声明式使用起来比RestTemplate,或者WebClient要简单很多,大大简化了开发步骤,对开发者更加友好。
  最新发布的SpirngCloud2022。0。0里描述得很明白:停止对OpenFeign的特征支持。言外之意:OpenFeign即将被SpringCloud淘汰,接棒的那必然是HttpExchange喽。所以在可预见的将来,前景一片大好。
  但是,笔者认为它还不够成熟,主要有两点:还不能支持SpringWeb的注解(RequestMapping体系),若能支持个人觉得会更为方便。目前还只有WebClient一套实现(由SpringBoot提供实现),而它属于ReactiveWeb体系,也就是必须引入webFlux相关技术,而webFlux在做业务开发时优势不明显,并非主流。因为若WebClient能从ReactiveWeb里剥离出来,笔者觉得就好很多了。总结
  谁能想到,OpenFeign竟然都快被淘汰了,Spring的大船滚滚向前,引领着整个潮流,逐渐暴露出了野心,或者说感受到了危机。
  先抄袭,再超越,Spring做到了。隐藏在全新的声明式客户端背后,其实还有SpringFramework6背后对WebMapping体系的重构,细心的你或许已有所发现。这些话题、新发现,留予笔者和你后续接着聊。
  原文链接:https:www。51cto。comarticle743079。html

詹姆斯队连续4年获得全明星赛胜利字母哥能否卫冕MVP追平威少一年一度的NBA全明星周末已经开始了,大牌巨星们的盛宴需要到后天北京时间21日早上9点才正式开打。全明星阵容今年依然是詹姆斯队PK杜兰特队,去年的詹姆斯队以170比……为什么国外的一些酒吧就是普通人随便喝几杯的地方,而国内一些酒骨子里崇洋而已,本来吃个牛排就是一顿饭,让那些崇洋的电视剧一弄像是在吃龙肉那么难。这就跟当年的麦当劳、肯德基在中国成了高消费餐馆是一样的。还记得国内曾经有父母,在麦当劳举……为什么伊力特酒销量一般?伊力特曲是老牌子的白酒了,比较冲,口感不错。记得在九三年到九四年,到新疆乌鲁木齐长江路附近的月明楼批发市场,每次都带一箱回沈阳。当时,沈阳的一些朋友都说这个酒不错。为什么……为什么网上卖的葡萄酒很便宜,七八十就可以买一箱,还是进口的?现在我告诉你为什么红酒这么便宜,包括一些进口酒,其实所谓的进口酒也不是整瓶进口的,一个公司一年进口个三吨两吨的红酒然后在国内自己勾兑分装,就包装成了所谓的进口红酒,现在我把一些……在北京去饭店5个人花费1339元,每人268元,你觉得如何?一般一八年,去迪拜闲。到迪拜帆船酒店吃了一顿饭,属于自助餐,没人强制去吃。每客收费220。00美金,也就是一千四五百块人民币。没有半滴含酒精饮品,只有各种不知名的饮料,及……为什么饭店炒的菜那么香?二姐就在饭店后厨工作,饭店经常会买猪板油练油,练完油的油渣都不要,她隔三差五都要往家带肥油渣。我们都用它在家包饺子包包子吃。饭店炒的菜为什么那么香,饭店的炒菜的灶子有的用天然气……山西在全国最出名的特产是什么?醋,汾酒!山西有很多很多的名特产品,单就食用品,数也数不清,各地区又是各地区的特色。如果你有兴来山西旅游,可以品尝一下山西各地方的特色美食,道道美食代表着山西人民勤劳奋斗……抗衰功课之怎么样才能做冻龄女神?面部抗衰是每一个爱美人士都关注的事情。但是琳琅满目的抗衰产品,哪个才有效呢,这是一个问题。皮肤抗衰是有方法的。每个人的面部状况不同,针对自身的问题,选择对应的方法才能事半……2022年换手机该关注哪些方面?老司机告诉你这五点不容忽视进入下半年以来,各大品牌相继推出搭载全新骁龙8处理器的机型,使得旗舰手机市场变得格外的活跃。得益于采用更成熟的台积电4nm制程工艺,骁龙8处理器的能效表现迎来大幅度提升,促使很……s31赛季嫦娥胜率两极分化,姬小满是版本陷阱,狂铁小重做成功文丨可儿游戏说原创王者荣耀新赛季更新之后,有三个英雄引起了玩家的注意,这三个英雄分别是新英雄姬小满、嫦娥以及狂铁。而这三个英雄的表现,在新赛季也都各自不同,嫦娥这个英雄的……巴萨正在夺冠道路上前进访巴塞罗那俱乐部主席拉波尔塔新华社记者张章、陈琛球队正在夺得西甲冠军的道路上前进,但争夺尚未结束,我们还有很多工作要做,西甲巴塞罗那俱乐部主席拉波尔塔日前在波兰华沙参加活动时接受新华社记者采访说。……动物派对GTX1050即可畅玩有望登陆移动平台《动物派对》公开了最新的开发日志,介绍了游戏的配置要求和地图玩法,一起来看看。配置要求:开发人员表示,团队整在设法保证质量前提下尽可能优化游戏性能。目前Inteli……
明日立冬,建议大家少吃茄子和柿子,多吃4宝,健康过冬季俗话说立冬补冬,补嘴空,从前人们整日劳作,到了立冬这一天才终于可以好好休息一下,为了犒赏全家,也为了应对寒冬,家家户户都要杀猪宰羊来补充营养。到了现如今,人们的生活水平也……iPhoneSE4进一步被确认全面屏双卡,或是最便宜的A16说实在的,这几年的iPhone手机在市场中的表现确实不够优秀,旗下的很多系列都出现了一些不好的表现,即使是新开辟的Plus版本也没有掀起特别高的热度。虽然每年的iPhon……加速数字化转型新模式新业态卡奥斯入选工信部创新领航名单,行业来源:人民网山东频道3月28日29日,第三届两化融合暨数字化转型大会在江苏苏州举行。会上发布了2022年工业互联网平台创新领航应用案例,来自六大应用模式的137个应用案例……96项智力博弈3000人参与其中,江苏第二届智运会4月来袭3月15日,记者从江苏省体育局获悉,由江苏省体育局、镇江市人民政府主办的江苏省第二届智力运动会(以下简称智运会)组委会正式成立,赛事将于4月12日19日在镇江举行。江苏省……荷叶荷花好看,荷叶泡水喝的功效与作用,荷叶泡水喝有什么好处?荷叶不仅有相当高的观赏价值,同时还有非常好的营养价值。将荷叶晒干后用来泡水喝,能起到很好的保健作用,虽然不会像服用其他药物那样马上见效,但是胜在无副作用,而且还有不错的减肥功效……外媒国际零售商热盼中国游客潮来源:参考消息网参考消息网1月21日报道据路透社1月20日报道,随着中国购物者逐渐回到春节假期的热门旅游地区,从澳门到曼谷的购物中心想通过展示红灯笼、纪念兔年的特别舞蹈以及打折……今夏最流行穿这4件上衣,好看炸了随着夏天的到来,T恤也是时候走进大家的衣橱了,不过T恤的基本款式就那么几个,很容易就会造成审美疲劳,也不容易穿出个人特色。想要在夏天穿得时髦又有个人风格,不妨尝试搭配一下其他单……湖南台拿到王炸了,遇见璀璨的你定档,演员颜值高,有剧看了都市言情剧这几年的热度只增不减,2021年的《你是我的荣耀》和《一生一世》两大甜剧让人难以自拔。到了今年有一部《今生有你》成功爆火出圈,钟汉良和李小冉时隔多年上演中年爱情……事实证明,喜欢合群的人,和不爱合群的人,人生的差距巨大01。事实上,这个社会有两种人。一种人喜爱合群圆滑处事,过着群来往往的生活。另一种人不喜爱合群性格孤僻。不管他人如何吹捧社交圈的好,她们都不屑一顾。在日常生活中,大……孙颖莎主管教练迟迟不能确定,刘国梁有顾虑,陈梦是关键乒乓球迷们最近对孙颖莎主管教练的事情百思不得其解,自WTT世界杯年终总决赛结束至今,孙颖莎最终归属仍然没有一个明确答案,之前乒协高层的承诺如同一纸空文一般,而李隼的公开出面声明……个人与祖国个人与祖国天真我认为个人和集体的关系,正象细胞和人的整个身体的关系一样。当人的身体受到损害的话,身上的细胞就不可避免也要受到损害。同样的,我们每个人的幸福也依赖于祖……威海最美的三个海岛头号有新人威海头条威海最美的三个海岛,去过两个才算来过威海。1、鸡鸣岛:推荐情侣打卡,建筑物超级出片。悬崖上的书吧,钢铁侠的家,还有孤独的海边礼堂。2、海驴岛……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网