Feign源码解析系列-最佳实践
前几篇准备写完feign的源码,这篇直接给出Feign的最佳实践,考虑到目前网上尚未一个比较好的实践解释,对于新使用spring cloud的同窗会对微服务之间的依赖产生一些迷惑,也会走一些弯路。这里给出目前本人在公司推荐的最佳实践,供各位参考。
1,服务提供方在Facade层定义好接口信息,包括接口路径,请求方式,入参,出参,返回错误等,并提供jar。

2,服务调用方项目引入提供方Facade层的jar,在本身项目中抄一份接口的定义,再包一层代理提供给本身业务层调用。 抄一份虽说看起来不是很优雅,可是也有个好处对外部依赖是能够控制的,代码也会清晰。一方面缘由,若是你尝试想直接依赖jar来引入Feign client 那么在EnableFeignClients注解的basePackages须要更改,若是依赖不断增多这个值也会不断变更。还有更重要的缘由是,咱们知道fallback的定义在Feign client接口上定义的,在调用方配置fallback才是更加合理,若是打入jar,那就没法实现fallback的配置了。


3,服务提供方打的facade jar包中不须要提供Fallback能力,由调用方配置实现Fallback,推荐使用FallbackFactory,缘由是create方法能够细化异常的判断。


4,在调用方上写的Feign proxy 须要对响应的返回值或异常进行处理后再提供给本身上层业务代码调用。接口的异常返回内容推荐在方法上进行详细的注释,咱们约定接口返回的标准参数,好比code能够断定接口返回的实际状况,由上层调用方进行判断转换成本身的业务。


5,最后关于feign的默认配置好比请求超时时间等,最好是在配置中心进行全局配置一份,各个应用本身能够覆盖配置。
欢迎关注本站公众号,获取更多信息