本章学习Feign,包括Feign的自定义配置,实现文件上传,进一步实现代码的重用,Feign性能优化,Feign与RestTemplate的对比与选择.

1 使用Feign实现远程HTTP调用

  • Feign是Netflix开源的声明式HTTP客户端
  • 添加依赖
  • 新建包及接口
  • 服务实现类

2 Feign的组成

  • 查找
  • 默认的Feign : 使用的URLConnection性能差
  • 和ribbon配合的 : 使用了代理模式,其实也就是feign-default的代理
  • contract 由于feign默认的注解是非Spring MVC型的
  • 通过该默认类实现了MVC注解

细粒度配置自定义

默认的Feign是不打印日志的

  • 自定义Feign日志级别

下面将设置为FULL级别

Java代码方式 - 指定日志级别

  • 接口类
  • 日志配置类
  • 配置文件
  • 注意坑,如果在feign配置类加了该注解,就必须放在compscan包以外,以免复制上下文重复扫描问题

配置属性方式 - 指定日志级别

将之前的Java配置类的注解注释掉

  • 配置文件

全局配置

Java代码方式 - 指定日志级别

◆ 方式一:让父子上下文ComponentScan重叠(强烈不建议使用) ◆ 方式二[唯一正确的途径] : @EnableFeignClients(defaultConfiguration=xxx.class)

  • 先将之前的细粒度配置注释掉!
  • 找到启动类的EFC注解并指定为配置类

配置属性方式 - 指定日志级别

  • 恢复之前的配置文件信息并修改如下

支持的配置项

  • 代码方式
  • 属性方式

配置最佳实践总结

  • Ribbon配置 VS Feigne配置
  • Feign代码方式 VS 属性方式
  • 最佳实践
  • 尽量使用属性配置,属性方式实现不了的情况下再考虑用代码配置
  • 在同一个微服务内尽量保持单一性,比如统一使用属性配置,不要两种方式混用,增加定位代码的复杂性

Feign的继承

  • UserCenter中的
  • ContentCenter中的,使其继承上面的代码

关于继承特性的争议

◆ 官方观点:不建议使用

这里继承会产生紧耦合

◆ 业界观点:很多公司使用 比如User服务修改了字段,而Content服务却不知道,没有修改,那么调用时就会报错 ◆ 个人观点:权衡利弊

此处有争议,不赘述

多参数请求构造

比如在User服务中有这样一个请求

那么如何使用Feign去请求这样的API呢?

回到Content服务,写代码

  • 写一测试类
  • 在测试启动类添加该测试项目
  • 启动报错,根据error提示,添加配置,之后正常启动!

因为现在有两个client都叫user-client(测试类也叫user-client), 重名了,所以Spring创建代理时会有问题,加上上述配置即可解决

  • 但是此刻这样访问依旧报错405
  • Feign端服务代码, 还需要添加注解
  • 推荐阅读 如何使用Feign构造多参数的请求

Feign脱离Ribbon使用

  • 在Content服务写代码
  • 测试类添加测试项目
  • 直接访问即可!

RestTemplate VS Feign

如何选择?

◆ 原则:尽量用Feign ,杜绝使用RestTemplate ◆ 事无绝对,合理选择

Feign性能优化

连接池 [提升15%左右]

  • 添加依赖
  • 配置文件

使用okhttp同理配置如上两步骤

日志级别

因为默认不打印日志哦!建议设置为basic,不要为full哦

常见问题总结 - 推荐阅读

Feign常见问题总结

现有架构总结

参考

  • Open Feign官网
  • 面向未来微服务:Spring Cloud Alibaba从入门到进阶

feign multipartfile 多文件上传_Spring Cloud Alibaba 实战(六) - 声明式HTTP客户端-Feign相关推荐

  1. 利用MultipartFile实现文件上传

    利用MultipartFile实现文件上传 在java中上传文件似乎总有点麻烦,没.net那么简单,记得最开始的时候用smartUpload实现文件上传,最近在工作中使用spring的Multipar ...

  2. 05_SpringCloud整合声明式HTTP客户端-Feign

    SpringCloud整合声明式HTTP客户端-Feign 文章目录 一.Feign介绍 1. 什么是Feign? 2. Feign组件: 二.基于Feign实现微服务远程调用 2.1. 引入feig ...

  3. 使用MultipartFile实现文件上传_SpringMVC

    文章目录 一.单文件上传 1. 创建上传表单 2. 新增配置 3. 编写上传控制类 4. 接收参数 5.文件保存路径 6. 转存文件 二.多文件上传 2.1. 创建上传表单 2.2. 编写上传控制类 ...

  4. java spring框架文件上传_spring系列---Security 安全框架使用和文件上传FastDFS

    1.Spring Security框架入门 1.1 Spring Security简介 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框 ...

  5. java muti实现图片上传_使用MultipartFile实现文件上传

    项目中会经常实现文件上传功能,比如在前台页面中设置上传文件按钮,后台保存文件至服务器,操作完成后前台展示上传结果,如上传成功或者上传失败信息.使用MultipartFile可以很容易的实现文件上传功能 ...

  6. Java MultipartFile实现文件上传并为图片加上水印(二)

    防止走丢~~欢迎大家留言收藏点赞 在上一篇我们已经实现了文件的上传,那么如果对于图片的上传,我们要给图片加上我们需要的水印信息,比如图片的上传人,上传地点等信息,此时我们为上传功能再新增水印功能. 最 ...

  7. Java MultipartFile实现文件上传(一)

    使用MultipartFile上传至本地或者文件服务器 直接上代码 一.前端上传至服务端(controller层) package com.cargps.common;import com.aliba ...

  8. 商城项目09_品牌管理菜单、快速显示开关、阿里云进行文件上传、结合Alibaba管理OSS、服务端签名后直传

    文章目录 ①. 品牌管理菜单 ②. 快速显示开关 ③. 阿里云上传概述 ④. 使用代码进行文件上传 ⑤. 结合Alibaba来管理oss ⑥. gulimall-third-party微服务 ⑦. 服 ...

  9. SRC挖洞之文件上传/下载漏洞的实战案例

    文章目录 前言 任意文件下载 案例1 某OA系统任意文件下载 案例2 某登录页面任意文件下载 案例3 某金融网站任意文件下载 案例4 服务端过滤 ../ 绕过下载 案例5 %00截断后下载任意文件 文 ...

  10. SpringCloud 入门教程(六): 用声明式REST客户端Feign调用远端HTTP服务

    首先简单解释一下什么是声明式实现? 要做一件事, 需要知道三个要素,where, what, how.即在哪里( where)用什么办法(how)做什么(what).什么时候做(when)我们纳入ho ...

最新文章

  1. Openstack贡献者须知 — OpenPGP/SSH/CLA贡献者协议
  2. 网页版python叫什么-用Python爬网页需要了解什么背景知识?
  3. python读取文件的常用方法
  4. mysql galera cluster实现vip_2019年学MySQL,最佳的10本新书
  5. 使用java.util.prefs.Preferences代替java.util.Properties
  6. 网络爬虫中Jsoup请求url
  7. 学会这个python数字大全,让你不再发愁
  8. python续行_python 控制台单行刷新,多行刷新
  9. nginx自签ssl证书
  10. Web开发之Cookie
  11. 思科服务器a设置dns信息,思科怎么配置dns服务器
  12. 第12课:生活中的构建模式——想要车还是庄园
  13. CF364D Ghd
  14. DESC查看表的结构
  15. 求三角形外接圆 hdu4720
  16. java 单线程 并发_单线程_Java高并发专题系列_Java视频-51CTO学院
  17. “WFCF”数据安全及隐私保护声明
  18. 写法更自由的Table表格--BeeGridTable
  19. UI设计中按钮如何设计,常见的按钮设计类型
  20. vue项目中,导出下载Excel表格

热门文章

  1. OpenCV人工智能图像处理学习笔记1目录
  2. 190702每日一句 孤独之前是迷茫,孤独之后是成长
  3. 传智播客黑马 Python学习笔记之python初识
  4. C/C++ C# unity经常使用的一些快捷键
  5. atitit 编程语言选型知识点体系.docx 编程语言选型时,你需要考虑的几个方面 目录 1. 1.2. 类型系统 5 1 2. 1.5. 语言规范 25 1 3. 1.6. 编程范式 52
  6. paip.日期时间操作以及时间戳uapi php java python 总结
  7. paip.c#.net 设置窗体关闭提醒
  8. paip.软件及网站项目开发效率低下的思索与改进
  9. (转)全球3.4万亿美元ETF蓝海,我们还在末尾 且听全球第二大团队讲真经
  10. 丹泽尔 x 陆奇:扫地僧牛逼的日常