微服务springcloud http客户端feign
feign替代RestTemplate
RestTemplate存在问题
- 代码可读性差,编程体验不统一
- 参数复杂的url难以维护
feign
是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign
帮助我们优雅的实现http请求发送
使用
- 添加依赖:
- 启动类添加注解,自动装配@EnableFeignClients
- 编写接口并使用来远程调用其他服务接口
自定义配置
虽然自动装配,但是允许我们覆盖默认配置
配置feign日志:
- 配置文件:
全局生效:
feign:
client:
config:
default: #全局生效
loggerLevel: FULL
局部生效
feign:
client:
config:
userservice: #局部生效 服务名称
loggerLevel: FULL
- Java代码:
性能优化
主要包括:
- 使用连接池代替默认的URLConnection
apache httpclient
okhttp
- 日志级别,最好用basic或none
最佳实践
方式一(继承):给消费者的FeignClient和提供者的controller定义统一的父接口作为标准。----------不推荐 紧耦合
方式二(抽取):将FeignClient抽取为独立模块,并把相关的pojo、默认的feign配置都放到这个模块中,提供给消费者使用。