优雅的使用SpringCloud

1、前言

       SpringCloud 是现在比较流行的微服务架构,随着微服务的流行,更多企业也从传统的架构向微服务架构转型。转型的过程中,为了兼容之前的服务架构,部分企业选择了双注册中心(指Dubbo和Cloud)。所以开发者在改造的时候,非常掣肘,只能在原来的基础上做一些调整。最后代码看起来有点似驴非马的感觉,当然这是对于一个有代码洁癖的人的感觉,哈哈哈。。。功能当然是完全OK的。

2、SpringCloud初体验

      用过SpringCloud的朋友们都知道,Cloud通过FeignClient对外提供服务。该项目也是一个独立的SpringBoot项目,可以通过页面直接访问控制层。

     通过FeignClient和Controller层的对比,你会发现两边的代码相似度特别高。如图:

     我们会发现:Controller其实是对Feign客户端的接口实现。

3、SpringCloud的优雅实现过程

      问题:①Controller直接去实现Feign客户端,Controller的方法你能不能映射到对用的url?如图:

                ②如果可以,这个是FeignClient注解的功能还是接口本身的功能?

 

    Controller直接实现FeignClient,这个SpringCloud官方已经给出了文档,如图:

     通过启动日志,我们能看到url是可以映射的,而且访问正常,如图:

      要验证是不是FeignClient是否提供的功能,只需要把@FeignClient注解注释掉,你会发现,everything is OK。所以控制能使用接口的映射是接口特有的功能。

      下来我们来看看,为什么控制层可以拿到接口的注解。

      我们都知道springboot不是新的框架,只是对springmvc框架做了整合。获取映射的url,我们需要追踪RequestMappingHandlerMapping这个类。通过源码追踪,如图:

   

      通过源码我们可以看到:当前类的注解拿不到时,会获取被实现接口的注解,如果还拿不到在获取父类的注解。

     到这里我们就知道映射的内幕了。这样以来,我们就可以直接实现FeignClient的接口,省去重复的代码。这样我们的代码就会变得很优雅。

4、总结

     优化的实现方式虽然简化代码,但是增加了FeignClient的和Controller的是耦合性,很多人不建议如此操作。至于现实中如何优雅的操作,就仁者见仁,智者见智了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智_永无止境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值