SpringCloud之http客户端Feign
注:这里的案例续SpringCloud 分布式微服务架构
先回忆一下RestTemplate,我们之前是怎么是用的。 我们初步用它是做远程的微服务的调用的。 主要的代码
但是这样的存在的问题就是代码的可读性并不是很 强。而且这样如果服务比较多的话,每次都需要将服务名一个一个的配置到url里面,这样的url也是不好维护的。
最最最重要的一点啊它不够优雅,我们寻求最优雅的方式。那么到底如何做到优雅的呢?一步一步来。
按照常规的方式首先必然是需要导入依赖,我们需要在客户端微服务导入这个依赖。然后整个feign的操作都在客户端的这个模块中操作。
但是其实我们可以把FeifnClient抽取为独立的模块,将功能模块独立化的好处就是我们的解耦化更高,当然这个必须要考虑到整体项目环境的合理性。
抽取的前提是你要明白它在整体的微服务里面扮演了什么样的角色。我们用这个代替了RestTemplate,那么作用实际上是一个对userservice的访问接口,也就是客户端对服务端的访问接口。
单独抽取出来的作用降低了耦合另外也方便我们将来其他的客户端去使用到这个接口。
整体的使用思路划分
首先我们创建一个模块。
首先说明该模块需要的依赖
feign-api模块这里我们只需要这样一个依赖。
然后我们需要去客户端引入相关的依赖。
为什么这里还需要单独引入feign-api这个模块依赖,因为我们需要使用到它的一些东西。毕竟是两个模块,我们将一些东西抽离出去,这里没有引入的话,会出现问题。
我们看feign-api这个模块做了哪些事情。
这个日志配置可以根据自己的需要来配置,也可以在配置文件中配置。
下面我们来看客户端。首先我们在service中调用到这个·接口的东西,因为我们会在这里有访问服务端接口。这里注入了bean。
当然我们还需要在启动类这里配置一下。
还有一点,配置文件的配置
具体就是这么多,框架就是这样,简化的同时也带来了配置的懵逼。
测试的人话是没什么问题的。项目启动的话,一定要加载完毕后测试。
本来想和springcloud那篇并在一起的,但是感觉文章有点臃肿。就分散开吧。依赖配置的话没什么技巧,记住用哪些就行了,实在不行自己做过一次配置就保留好,用的时候cv大法,或者对照着,就不要专门因为依赖导入配置相关费心。