feign multipartfile 多文件上传_Spring Cloud Alibaba 实战(六) - 声明式HTTP客户端-Feign
本章学习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相关推荐
- 利用MultipartFile实现文件上传
利用MultipartFile实现文件上传 在java中上传文件似乎总有点麻烦,没.net那么简单,记得最开始的时候用smartUpload实现文件上传,最近在工作中使用spring的Multipar ...
- 05_SpringCloud整合声明式HTTP客户端-Feign
SpringCloud整合声明式HTTP客户端-Feign 文章目录 一.Feign介绍 1. 什么是Feign? 2. Feign组件: 二.基于Feign实现微服务远程调用 2.1. 引入feig ...
- 使用MultipartFile实现文件上传_SpringMVC
文章目录 一.单文件上传 1. 创建上传表单 2. 新增配置 3. 编写上传控制类 4. 接收参数 5.文件保存路径 6. 转存文件 二.多文件上传 2.1. 创建上传表单 2.2. 编写上传控制类 ...
- java spring框架文件上传_spring系列---Security 安全框架使用和文件上传FastDFS
1.Spring Security框架入门 1.1 Spring Security简介 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框 ...
- java muti实现图片上传_使用MultipartFile实现文件上传
项目中会经常实现文件上传功能,比如在前台页面中设置上传文件按钮,后台保存文件至服务器,操作完成后前台展示上传结果,如上传成功或者上传失败信息.使用MultipartFile可以很容易的实现文件上传功能 ...
- Java MultipartFile实现文件上传并为图片加上水印(二)
防止走丢~~欢迎大家留言收藏点赞 在上一篇我们已经实现了文件的上传,那么如果对于图片的上传,我们要给图片加上我们需要的水印信息,比如图片的上传人,上传地点等信息,此时我们为上传功能再新增水印功能. 最 ...
- Java MultipartFile实现文件上传(一)
使用MultipartFile上传至本地或者文件服务器 直接上代码 一.前端上传至服务端(controller层) package com.cargps.common;import com.aliba ...
- 商城项目09_品牌管理菜单、快速显示开关、阿里云进行文件上传、结合Alibaba管理OSS、服务端签名后直传
文章目录 ①. 品牌管理菜单 ②. 快速显示开关 ③. 阿里云上传概述 ④. 使用代码进行文件上传 ⑤. 结合Alibaba来管理oss ⑥. gulimall-third-party微服务 ⑦. 服 ...
- SRC挖洞之文件上传/下载漏洞的实战案例
文章目录 前言 任意文件下载 案例1 某OA系统任意文件下载 案例2 某登录页面任意文件下载 案例3 某金融网站任意文件下载 案例4 服务端过滤 ../ 绕过下载 案例5 %00截断后下载任意文件 文 ...
- SpringCloud 入门教程(六): 用声明式REST客户端Feign调用远端HTTP服务
首先简单解释一下什么是声明式实现? 要做一件事, 需要知道三个要素,where, what, how.即在哪里( where)用什么办法(how)做什么(what).什么时候做(when)我们纳入ho ...
最新文章
- Openstack贡献者须知 — OpenPGP/SSH/CLA贡献者协议
- 网页版python叫什么-用Python爬网页需要了解什么背景知识?
- python读取文件的常用方法
- mysql galera cluster实现vip_2019年学MySQL,最佳的10本新书
- 使用java.util.prefs.Preferences代替java.util.Properties
- 网络爬虫中Jsoup请求url
- 学会这个python数字大全,让你不再发愁
- python续行_python 控制台单行刷新,多行刷新
- nginx自签ssl证书
- Web开发之Cookie
- 思科服务器a设置dns信息,思科怎么配置dns服务器
- 第12课:生活中的构建模式——想要车还是庄园
- CF364D Ghd
- DESC查看表的结构
- 求三角形外接圆 hdu4720
- java 单线程 并发_单线程_Java高并发专题系列_Java视频-51CTO学院
- “WFCF”数据安全及隐私保护声明
- 写法更自由的Table表格--BeeGridTable
- UI设计中按钮如何设计,常见的按钮设计类型
- vue项目中,导出下载Excel表格
热门文章
- OpenCV人工智能图像处理学习笔记1目录
- 190702每日一句 孤独之前是迷茫,孤独之后是成长
- 传智播客黑马 Python学习笔记之python初识
- C/C++ C# unity经常使用的一些快捷键
- atitit 编程语言选型知识点体系.docx 编程语言选型时,你需要考虑的几个方面 目录 1. 1.2. 类型系统	5	1 2. 1.5. 语言规范	25	1 3. 1.6. 编程范式	52
- paip.日期时间操作以及时间戳uapi php java python 总结
- paip.c#.net 设置窗体关闭提醒
- paip.软件及网站项目开发效率低下的思索与改进
- (转)全球3.4万亿美元ETF蓝海,我们还在末尾 且听全球第二大团队讲真经
- 丹泽尔 x 陆奇:扫地僧牛逼的日常