RestTemplate方式调用存在的问题
存在下面的问题:
1.代码可读性差,编程体验不统一
2.参数复杂URL难以维护
Feign的介绍
Feign是一个声明式的http客户端,官方地址: https://github.com/OpenFeign/feign
其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题
定义和使用Feign客户端
Feign的使用步骤
1.引入依赖
2.添加@EnableFeignClients注解
3.编写FeignClient接口
4.使用FeignClient中定义的方法代替RestTemplate
自定义feign配置
日志级别配置
Feign的日志配置
1.方式一是配置文件,feign.client.config.xxx.loggerLevel
如果xxx是default则代表全局
如果xxx是服务名称,例如userservice则代表某服务
2.方式二是java代码配置Logger.Level这个Bean
如果在@EnableFeignClients注解声明则代表全局
如果在@FeignClient注解中声明则代表某服务
Feign性能优化
Feign底层的客户端实现
1.URLConnection:默认实现,不支持连接池
2.Apache HttpClient: 支持连接池
3.OKHttp:支持连接池
因此优化Feign的性能主要包括
1.使用连接池代替默认的URLConnection
2.日志级别,最好用basic或none
Feign的最佳实践
继承(不推荐)
抽取
不同包的FeignClient的导入有两种方式
1.在@EnableFeignClients注解中添加basePackages,指定
FeignClient所在的包
2.在@EnableFeignClients注解中添加clients,指定具体
FeignClient的字节码