十六、【源码】plugins插件

源码地址:https://github.com/mybatis/mybatis-3/

仓库地址:https://gitcode.net/qq_42665745/mybatis/-/tree/16-plugin

plugins插件

plugins功能分为两部分

1.首先是在xml解析时解析出配置的插件类,并实例化放入拦截器链中

2.其次执行的时候创建StatementHandler的时候要调用拦截器链中的拦截器对对象进行包装,使用这个对象执行方法的时候,都会进入拦截器进行判断,是否要拦截这个方法,是就处理,否就放行。

在这里插入图片描述

我看InterceptorChain.pluginAll是将所有拦截器都应用到目标对象上,就想用两个拦截器测试下效果,
首先再加一个ResultSetPlugin拦截一下ResultSetHandler类的handleResultSets方法,也配置完成了,但是执行的时候并不会进入这个拦截器,debug了一下,找到了原因:
初始化完成后InterceptorChain中有两个拦截器,创建语句处理器StatementHandler的时候会调用InterceptorChain.pluginAll方法进行包装拦截器,循环开始包装,第一次目标对象是PreparedStatementHandler,返回一个代理对象 P r o x y 6 ,第二次目标对象是 Proxy6,第二次目标对象是 Proxy6,第二次目标对象是Proxy6,动态代理要获取这个目标对象的接口还要判断是否在signatureMap中,由于不在signatureMap
中,创建代理对象失败,所以虽然我配置了两个拦截器,但实际只执行了一个,是我测试的方法有问题吗,求解?

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

量化投资分析平台 迅投 QMT(四)获取标的期权的代码

量化投资分析平台 迅投 QMT [迅投 QMT](https://www.xuntou.net/?user_code7NYs7O)我目前在使用有了底层标的如何获取期权的交易代码呢?上代码历史帖子 迅投 QMT 我目前在使用 两个月前(2024年4月)迅投和CQF有一个互动的活动,进…

Java实现2048游戏源代码(启动即可玩)

使用Java语言从零到一开发经典2048游戏的全部源代码及详尽的开发教程。 适合Java初学者、游戏开发爱好者以及想要深入理解Swing GUI框架的开发者学习与参考。 知识领域:游戏开发、Java编程、图形用户界面(GUI)设计 技术关键词:Java Swing、事件监听、多…

“探索‘循环购‘:快消品行业的新商业模式与增长策略“

大家好,我是吴军,来自一家深耕于软件开发和商业模式创新的科技公司。我们的专长在于为各类企业量身打造商城系统,并提供个性化的商业模式解决方案。迄今为止,我们已经助力众多企业成功实施了超过200种前沿的商业模式,实…

阿奇科技 简单java-swing计算器源码(可用于课设等)

此系统用的技术有java swing! 实现的功能: 加减乘除(可以进行小数运算) 清空数据 最小化 小巧方便,功能齐全! 页面截图: 源码地址:点击这里下载源码 获取全套代码,或咨询更多代码…

【JavaEE】Spring Boot 日志详解

一 日志概述 日志是用于记录系统运行状态、用户操作和重大事件的工具。 1.日志的用途 系统监控 监控现在几乎是一个成熟系统的标配, 我们可以通过日志记录这个系统的运行状态, 每⼀个方法的响应时间, 响应状态等, 对数据进行分析, 设置不同的规则, 超过阈值时进行报警. 比如统…

科技赋能,无障碍出行的新纪元

在现代社会,公共设施的建设不仅是衡量城市文明程度的标尺,更是实现社会公平与包容的重要载体。对于盲人群体而言,一个完善的公共设施网络,意味着他们能够更加独立、自信地融入社会,享受与视力健全者同等的公共服务与便…

湖南(品牌控价)源点调研 手机价格管理对品牌的影响分析

前言:手机自发明以来,过去一直是国际品牌占主导地位,从最初的爱立信、摩托罗拉,到后来的诺基亚、三星,苹果在这个手机行业里,竞争激励,没有百年企业,每个品牌的盛衰都有背后的历史背…

软件测试——Java自动化测试Selenium

目录 1.运行环境 2.环境配置 3.第一个浏览器程序 4.浏览器操作 5.元素定位 6.元素操作常用API 7.特殊元素定位与操作 8.元素三大等待 9.iframe操作 10.window操作 11.select选择框 12.js语句执行 13.鼠标操作 14.截图操作 1.运行环境 编译工具:IDEA …

教师自费出书的注意事项有哪些?

备案主编专著的优势:(qkfb88688) 1、副高、正高职称最高学术成果 2、专著可以代替核心 3、周期短、出书快、可重复使用 4、双号齐全:ISBN~CIP 5、版权长期有效 教师自费出书有以下一些注意事项: 关于书稿&…

python---正则表达式

本章目标: 1:能够知道在Python中使用正则要导入的模块; [了解] re模块 2:能够使用re模块匹配单个字符; [重点] \d \w 正则表达式的概述: 基本介绍 正则表达式,也叫做规则表达式,通常会说成[正则] 实际上正则表达式就是指符合一定规则的字符串,同时他能用于检查一段…

MyBatis拦截器使用方法

前言 MyBatis拦截器可以做的工作:SQL修改,分页操作,数据过滤,SQL执行时间性能监控等。 1. 基础介绍 1.1. 核心对象 从MyBatis代码实现的角度来看,MyBatis的主要的核心部件有以下几个: Configuration&am…

OpenStack所支持的虚拟化技术和KVM、Xen、Hyer-V、QEMU、Libvirt说明

OpenStack所支持的虚拟化技术主要包括以下几种: KVM (Kernel-based Virtual Machine): 基于Linux内核的虚拟化技术。在Linux内核中添加一个虚拟化模块来实现虚拟机的运行。是OpenStack用户使用较多的虚拟化技术,支持OpenStack的所有特性。通过QEMU模拟器…

【NoSQL数据库】Redis——哨兵模式

Redis——哨兵模式 Redis哨兵 Redis——哨兵模式1.什么是哨兵机制(Redis Sentinel)1.1 哨兵的作用 2.哨兵的运行机制3.故障处理redis常见问题汇总1、redis缓存击穿是什么?如何解决?2、redis缓存穿透是什么?如何解决&am…

详解!Python怎么配置环境变量

详解!Python怎么配置环境变量 许多刚开始学习编程的初学者在 python的安装上会抱有一定的疑惑,为什么明明已经安装好了 python 环境,但并不能运行python 代码,这是因为 python 的安装过程中还有一步环境变量的配置,接…

微信“对方正在输入”背后的小心思:保持隐秘感,享受宁静的交流

微信,这个伴随我们起居、工作的超级应用,不仅仅是一款聊天软件,它几乎成为了我们社交生活的一部分。它的便捷,让我们的日常沟通如鱼得水。然而,在这个几乎完美的社交工具中,有一个功能,让不少人…

CSS真题合集(二)

CSS真题合集(二) 11. css3新增特性12. css3动画12.1 关键帧动画 (keyframes)12.2 animation12.3 transition12.4 transform 13. grid网格布局13.1 使用display: grid或display: inline-grid的HTML元素。13.2 定义网格13.3 13.4 自动填充和自动放置13.4 对…

信号发生器如何将频率调大,步尽值改成10

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

PPT文件损坏且无法读取怎样修复?文档损坏修复方法推荐

PPT文件已经成为工作汇报、商务演示、学术交流以及教学培训中最常用到的文件,随着文件数量的增多和存储设备的频繁使用,我们有时会遇到PPT文件损坏无法打开的情况,这无疑给工作和学习带来了极大的困扰。 PPT文件损坏的原因可能多种多样&#…

FreeRTOS手表项目多级菜单的实现

一、首先介绍一下智能手表项目的背景: 如图,关注焦点是任务: 1、在一个确定时刻,在那一圈任务中(写有只有一个任务解挂)只有一个任务处在运行,界面显示的是该任务应该显示的内容; …

韩国Neowine推出第三代强加密芯片ALPU-CV

推出第三代加密芯片;是ALPU系列中的高端IC;是一款高性能车规级加密芯片;其加密性更强、低耗电、体积小;使得防复制、防抄袭板子的加密性能大大提升,该芯片通过《AEC-Q100》认证,目前已经在国产前装车辆配件…