SpringCloudGateway源码解析:RemoveCachedBodyFilter
发布日期:2021-06-30 21:31:32
浏览次数:2
分类:技术文章
本文共 1373 字,大约阅读时间需要 4 分钟。
package org.springframework.cloud.gateway.filter;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import reactor.core.publisher.Mono;import org.springframework.core.Ordered;import org.springframework.core.io.buffer.PooledDataBuffer;import org.springframework.web.server.ServerWebExchange;import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.CACHED_REQUEST_BODY_ATTR;/** * 移除请求上下文中的body缓存信息 * 只有在使用了ReadBodyPredicateFactory相关处理是会有body缓存 * @version 2.2.5 */public class RemoveCachedBodyFilter implements GlobalFilter, Ordered { private static final Log log = LogFactory.getLog(RemoveCachedBodyFilter.class); @Override public Monofilter(ServerWebExchange exchange, GatewayFilterChain chain) { //mono处理完成后执行方法 return chain.filter(exchange).doFinally(s -> { //移除上下文中的的cachedRequestBody信息 Object attribute = exchange.getAttributes().remove(CACHED_REQUEST_BODY_ATTR); //如果body信息不空,则释放数据缓存 if (attribute != null && attribute instanceof PooledDataBuffer) { PooledDataBuffer dataBuffer = (PooledDataBuffer) attribute; if (dataBuffer.isAllocated()) { if (log.isTraceEnabled()) { log.trace("releasing cached body in exchange attribute"); } dataBuffer.release(); } } }); } /** * 将该过滤器设置为最高优先级,优先加载 * @return */ @Override public int getOrder() { return HIGHEST_PRECEDENCE; }}
转载地址:https://lizz6.blog.csdn.net/article/details/109747500 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月27日 05时18分26秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
《知识图谱》阅读笔记(六)
2019-04-30
【NLP学习笔记】中文分词(Word Segmentation,WS)
2019-04-30
【超越白皮书7】你需要知道关于ETH2.0的几个事实
2019-04-30
对于时间复杂度的通俗理解
2019-04-30
如何输入多组数据并输出每组数据的和?
2019-04-30
行阶梯型矩阵
2019-04-30
matlab中uint8,double,im2double和im2uint8的区别
2019-04-30
SVM进行人脸检测
2019-04-30
C++学习笔记
2019-04-30
图像处理学习笔记
2019-04-30
Machine Learning Onramp on MATLAB 学习笔记
2019-04-30
Machine Learning with MATLAB 1.1 to 2.2
2019-04-30
Learning DSP with MATLAB
2019-04-30
用MATLAB实现m序列的生成(MATLAB 2021a适用)
2019-04-30
MATLAB函数备忘(定期更新)
2019-04-30
13行MATLAB代码实现网络爬虫 爬取NASA画廊星图
2019-04-30
MATLAB指定路径保存图片方法
2019-04-30
Python一键获取微信推送封面图
2019-04-30
油猴脚本:微信推送浏览功能拓展
2019-04-30
JavaScript DOM对象操作详解
2019-04-30