理解springboot那些过滤器与调用链、包装或封装、设计模式相关等命名规范,就可以读懂80%的springboot源代码,和其他Java框架代码

news2025/7/20 18:40:14

紧接上面《

理解springboot那些注册与回调、监控与统计等命名规范,就可以读懂70%的springboot源代码》、《

理解springboot那些约定俗成的框架类名、全局context等命名规范,就可以读懂一半springboot的源代码》2篇文章,此片将汇总springboot那些过滤器与调用链、包装或封装、设计模式相关等命名规范,以便更加精进阅读springboot源代码

过滤器与调用链


Pipeline:

流管道,用在流数据处理中。

如:Springboot下redis用pipelining管道模式写入,使写入性能更佳!

引入pipelining,与传统模式对比

compile('redis.clients:jedis:2.9.0')  #gradle引入
compile('org.springframework.data:spring-data-redis:2.0.8.RELEASE')

测试代码:

import redis.clients.jedis.Jedis;
import redis.clients.jedis.Pipeline;

public class BatchOperSet {

    private static final String HOST = "127.0.0.1";
    private static final int PORT = 6379;

    // 批量插入数据到Redis,正常使用
    public static void batchSetNotUsePipeline() throws Exception {
        Jedis jedis = new Jedis(HOST, PORT);
        String keyPrefix = "normal";
        long begin = System.currentTimeMillis();
        for (int i = 1; i < 10000; i++) {
            String key = keyPrefix + "_" + i; 
            String value = String.valueOf(i);
            jedis.set(key, value);
        }
        jedis.close();
        long end = System.currentTimeMillis();
        System.out.println("not use pipeline batch set total time:" + (end - begin));
    }

    // 批量插入数据到Redis,使用Pipeline
    public static void batchSetUsePipeline() throws Exception {
        Jedis jedis = new Jedis(HOST, PORT);
        Pipeline pipelined = jedis.pipelined();
        String keyPrefix = "pipeline";
        long begin = System.currentTimeMillis();
        for (int i = 1; i < 10000; i++) {
            String key = keyPrefix + "_" + i; 
            String value = String.valueOf(i);
            pipelined.set(key, value);
        }
        pipelined.sync();
        jedis.close();
        long end = System.currentTimeMillis();
        System.out.println("use pipeline batch set total time:" + (end - begin));
    }

    public static void main(String[] args) {    
        try {
            batchSetNotUsePipeline();
            batchSetUsePipeline();      
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

测试结果:

not use pipeline batch get total time:2990
use pipeline batch get total time:41

参考案例:Springboot下redis写入pipelining管道模式性能调优实例

  1. 参考案例:Springboot下redis写入pipelining管道模式性能调优实例
  2. PipelineContext.java

Chain:

链条,一般用在责任链模式中。

责任链模式(Chain of responsibility pattern)可以为某个请求创建一个对象链,每个对象依序检查此请求并对其进行处理或者将它传给链中的下一个对象。

责任链模式,是一种实用性非常强的设计模式,比较典型的应用场景有:

  1. Apache Tomcat 对 Encoding 编码处理的处理
  2. SpringBoot ⾥⾯的拦截器、过滤器链
  3. netty 中的处理链
  4. 支付风控的机制
  5. ⽇志处理级别

通过注解@Order来指定排序,代替手动方法排序sort()

/**
 * 指定注入顺序为1
 *
 */
@Order(1)
@Component
public c

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1157300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(三)上市企业实施IPD成功案例分享之——五菱

2022年对汽车产业而言是极为不平凡的一年。这一年&#xff0c;企业受到疫情反复、芯片短缺、原材料价格上涨等负面因素影响&#xff0c;汽车产业的变革持续加速。面对变革与挑战&#xff0c;五菱汽车仍逆势交出一份超出市场预期的成绩单。上半年&#xff0c;五菱发布2022年财报…

职场晋升力加分利器:巧用ChatGPT快速搞定数据分析

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 第一部分&#xff1a; C…

Java设置日期时间的毫秒数为0

背景 做一个发送短信的需求&#xff0c;采用RabbitMQ来实现定时发送。发送时需要验证发送短信任务的预计发送时间和生产者传过来的时间是否一致&#xff0c;一致才发送。 结果在调试的时候&#xff0c;却发现任务一直没法触发。一步步调试&#xff0c;发现是两个时间不相等。明…

【Proteus仿真】【51单片机】贪吃蛇游戏

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器&#xff0c;使用8*8LED点阵、按键模块等。 主要功能&#xff1a; 系统运行后&#xff0c;可操作4个按键控制小蛇方向。 二、软件设计 /* 作者&#xff1a;嗨小易…

2023第二十五届深圳高交会将于11月15日在深启幕

10月31日下午&#xff0c;第二十五届中国国际高新技术成果交易会&#xff08;以下简称高交会&#xff09;新闻发布会在市政府新闻发布厅举行。以“激发创新活力 提升发展质量”为主题的第二十五届高交会将于11月15日-19日在深圳会展中心&#xff08;福田展区&#xff09;和深圳…

el-date-picker如何选择规定范围内的时间(十天以内的时间)

这个需求是可以选择之后来计算,选择当前日期之后自动计算当前日期前后的十天以内的日期 如下图 就是19号前面十天的日期 以及后面十天的日期(包含当天) 需要用到elementUI el-date-picker是Element UI库中的一个组件&#xff0c;用于日期选择 <el-date-picker v-model&q…

零代码编程:用ChatGPT进行批量重命名时需要注意特殊字符

用ChatGPT进行批量重命名时&#xff0c;一部分成功了&#xff0c;但有一部分文件标题没有变化。 问下ChatGPT怎么回事&#xff1a; 回复&#xff1a;在Windows中&#xff0c;文件名不能包含以下字符&#xff1a;\ / : * ? " < > |&#xff0c;使用Python的 str.rep…

LiveMeida视频接入网关

一、产品简介 视频接入网关主要部署在视频存储节点或视频汇聚节点&#xff0c;面向不同用户&#xff0c;主要用于对接不同厂家、不同型号的摄像机设备&#xff0c;获取摄像机视频后&#xff0c;以统一标准的视频格式和传输协议&#xff0c;将视频推送至上层联网/应用平台。可广…

支付宝小程序自主DIY源码系统 五分钟打造一个专属小程序 带完整搭建教程

现如今&#xff0c;在我们的日常生活中&#xff0c;小程序已经成为一种备受欢迎的应用形态。支付宝小程序自主DIY源码系统能够帮助用户快速搭建属于自己的小程序。罗峰今天来给大家分享一款支付宝小程序自主DIY源码系统 &#xff0c;帮你五分钟就创建一个小程序&#xff0c;十分…

《Pytorch新手入门》第一节-认识Tensor

《Pytorch新手入门》第一节 一、认识Tensor1.1Tensor定义1.2Tensor运算操作1.3Tensor与numpy转换 参考《深度学习框架PyTorch&#xff1a;入门与实践_陈云(著)》 一、认识Tensor 1.1Tensor定义 Tensor 是 PyTorch 中重要的数据结构&#xff0c;可认为是一个高维数组。它可以是…

科东软件受邀参加2023国家工业软件大会,共话工业软件未来

10月28日&#xff0c;由中国自动化学会主办的2023国家工业软件大会在浙江湖州开幕。大会以“工业软件智造未来”为主题&#xff0c;一批两院院士、千余名专家学者齐聚一堂&#xff0c;共同探讨工业软件领域前沿理论和技术创新应用问题&#xff0c;共同谋划我国工业软件未来发展…

前端性能瓶颈崩溃项目?Webpack助力解决!

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 一、背…

SOLIDWORKS上海华东代理商特别企划·SW正版软件免费试用下载

为了向上海华东地区广大SOLIDWORKS用户提供更好的本地化服务&#xff0c;SOLIDWORKS官方授权代理经销商北京亿达四方信息技术有限公司在上海成立了分公司&#xff0c;20年来致力于帮助用户搭建基于SOLIDWORKS的3D数字化研发设计制造平台、培养研发和创新型人才、建立基于3D产品…

linux杀毒软件下载、安装(在线安装、离线安装)

下载 ClamAVNet 离线安装 # 离线安装 rpm -ivh --prefix/usr/local/clamav clamav*linux.x86_64.rpm # 添加用户组和组成员 groupadd clamav useradd -g clamav clamav # 创建日志目录、病毒库目录和套接字目录 mkdir -p /usr/local/clamav/logs mkdir -p /usr/local/clamav/…

今日头条小程序源码系统 带完整搭建教程

随着小程序的发展&#xff0c;越来越多的企业和开发者开始关注小程序的开发。今天源码小编给大家分享一款今日头条小程序源码系统&#xff0c;并附带完整的搭建教程。 今日头条小程序源码系统是一款基于PHPMySQL开发组合开发的小程序框架&#xff0c;具有丰富的组件库和插件生…

HTML链接、头部

HTML链接&#xff1a; HTML使用超级链接与网络上的另一个文档相连。HTML中的链接是一种用于在不同网页之间的导航的元素。链接通常用于将一个网页与另一个网页或资源&#xff08;文档、图像、音频文件等&#xff09;相关联。链接允许用户在浏览网页时单击文本或图像来跳转到其他…

Java导入Jsoup库做一个有趣的爬虫项目

Jsoup库是一款Java的HTML解析器&#xff0c;可用于从网络或本地文件中获取HTML文档并解析其中的数据。它可以模拟浏览器的行为&#xff0c;获取网页中的数据&#xff0c;是Java爬虫中常用的工具之一。与浏览器相比&#xff0c;Jsoup库的主要区别在于它不会执行JavaScript代码&a…

二叉树(9.7)

目录 1.树概念及结构 1.1树的概念 1.2 树的相关概念 1.3 树的表示 2.二叉树概念及结构 2.1概念 2.2 特殊的二叉树 2.4 二叉树的存储结构 3.二叉树顺序结构及实现 3.1 二叉树的顺序结构 3.2 堆的概念及结构 1.树概念及结构 1.1树的概念 前面我们学习的都是组成简…

如何建设企业级API网关

企业级API网关是现代软件架构中不可或缺的重要组成部分&#xff0c;它能够为整个系统提供安全可靠的入口&#xff0c;同时也是系统中不同业务模块之间交互的桥梁。API网关使得搭建一个新的应用服务变得简单、快捷、高效&#xff0c;同时&#xff0c;开发人员可以将更多的精力放…

白嫖必看!500条chatgpt提示词任你使用

你可能好奇&#xff0c;什么是prompt? 简单来说&#xff0c;prompt就是chatgpt的启动口令&#xff08;即提示词&#xff09;&#xff0c;是指通过特定问题来启动AI助手的创作。 使用它非常简单&#xff0c;只需在chatgpt前输入一句话或几个关键词&#xff0c;就能让AI助手理解…