Spring中方法拦截器
一、MethodInterceptor
在动态代理中要想添加一个额外功能,只要去实现MethodBeforeAdvice这个接口就行了,但是实现了这个接口的额外功能只能运行在目标类执行之前,如果是想在目标类执行之后呢?那这个需求就完成不了,所以我们这里引入一个新的接口MethodInterceptor(方法拦截器)使用这个接口可能完成在目标类执行的各个时间段都能成功执行。
这里的包一定要导正确
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;public class Around implements MethodInterceptor {// methodInvocation是目标对象中需要添加额外功能的方法@Overridepublic Object invoke(MethodInvocation methodInvocation) throws Throwable {// 这里的proceed方法代表的就是目标方法运行Object ret = methodInvocation.proceed();//如果想要额外功能运行在目标方法之后,就在proceed方法后加上额外功能就行了System.out.println("-------额外功能运行在目标方法后-------log");// 这里的返回值其实就是目标方法的返回值return ret;}
}
将这个拦截器完成了之后,也是需要在配置文件中创建对象的
<bean id="around" class="com.gl.demo.proxy.Around"/>
创建了这个对象,之后引入额外功能的配置文件就不再是Before类了,而是这个Around类,切入点还是所有的方法
<bean id="userService" class="com.gl.demo.proxy.UserServiceImpl"/><bean id="around" class="com.gl.demo.proxy.Around"/><aop:config><aop:pointcut id="pc" expression="execution(* *(..))"/><aop:advisor advice-ref="around" pointcut-ref="pc"/>
</aop:config>
利用之前的测试代码,这里发现额外功能已经添加完成了,并且是在目标方法运行之后
public void test2() {ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-config2.xml");UserService userService = (UserService) ctx.getBean("userService");userService.register();userService.login();
}

实现MethodInterceptor接口可以让我们的额外功能变得更加灵活,其实这里不只是能运行在目标方法之后,其实还可以前后都运行(我们常说的环绕通知)、也可以在抛出异常之后运行等,这里就不再演示了
相关文章:
Spring中方法拦截器
一、MethodInterceptor 在动态代理中要想添加一个额外功能,只要去实现MethodBeforeAdvice这个接口就行了,但是实现了这个接口的额外功能只能运行在目标类执行之前,如果是想在目标类执行之后呢?那这个需求就完成不了,所…...
【网络】HTTPS讲解(侧重于加密、秘钥、证书的讲解)
HTTPS讲解 前言正式开始安全HTTP和HTTPS的关系什么是加密和解密为什么要加密运营商劫持中间人 常⻅的加密⽅式对称加密⾮对称加密 数据摘要数字签名HTTPS 的⼯作过程⽅案 1 - 只使⽤对称加密(不可靠)⽅案 2 - 只使⽤⾮对称加密(不可靠&#x…...
absolute 定位
关于CSS的一些学习记录 absolute定位类型 语法staticrelative 相对定位absolute 绝对定位fixed 固定定位stick 粘性定位 absolute CSS postion属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则决定了该元素的最终位置。 定位类型 定位元素是其计算后…...
比亚迪、吉利、蔚来等将出席2023第四届中国新能源汽车热管理峰会
会议背景 2023第四届中国新能源汽车热管理创新国际峰会将于11月16日-17日在上海举办。会议线上线下同步举行,会场提供中英同声传译。 本次峰会将密切关注“双碳”目标下中国新能源汽车一体化热管理的最新行业动态与关键技术的研发和应用方案。会议将对中国新能源汽…...
OJ第五篇
文章目录 用队列实现栈用栈实现队列设计循环队列 用队列实现栈 链接:用队列实现栈 这道题是让我们用两个队列实现一个栈,简单来说,就是利用队列来实现一个先入后出的功能,我们知道队列是先入先出,如何用两个队列来实…...
【论文解读】Parameter-Efficient Transfer Learning for NLP
一. 介绍 1.1 为什么要引入Adapter 在存在许多下游任务的情况下,微调的参数效率很低:每个任务都需要一个全新的模型。作为替代方案,我们建议使用适配器模块进行传输。 1.2 论文目标 目标是建立一个在所有这些方面都表现良好的系统,但不需…...
星途星纪元 ES,用艺术思维表达工程技术
10月8日,星途星纪元ES携手世界级成都爱乐首席乐团、旅德青年钢琴家王超,在成都打造了一场“万物星声”超舒适音乐会视听盛宴。这是星途星纪元首次跨界音乐圈、牵手音乐挚友,共同演绎音乐和汽车的美学协奏曲,开启高端超舒适美学新纪…...
【Java 进阶篇】深入了解 Bootstrap 插件
Bootstrap 是一个流行的前端框架,提供了各种强大的插件,用于增强网页和应用程序的功能和交互性。本篇博客将深入介绍 Bootstrap 插件,适用于那些刚刚开始学习前端开发的小白。 什么是 Bootstrap? 在深入探讨 Bootstrap 插件之前…...
VMware17.0安装教程(2023最新最详细)
目录 一.简介 二.安装步骤 软件:VMware版本:17.0语言:简体中文大小:554.98M安装环境:Win11/Win10/Win8/Win7硬件要求:CPU2.6GHz 内存4G(或更高)下载通道①百度网盘丨下载链接: htt…...
k8s----11、service
services 1、概述2、存在的意义2.1 服务发现2.2 负载均衡 3、pod与service的关系4、service 三种类型4.1 、 ClusterIP4.2 、NodePort4.3 、LoadBalancer 1、概述 Service 是 Kubernetes 最核心概念,通过创建 Service,可以为一组具有相同功能的容器应 用提供一个统…...
深入篇【Linux】学习必备:进程环境变量/进程切换
深入篇【Linux】学习必备:进程环境变量/进程切换 Ⅰ.环境变量Ⅱ.深层意义Ⅲ.全局属性Ⅳ.进程切换 Ⅰ.环境变量 1.环境变量是什么?:环境变量是系统提供的一组name/value形式的变量,不同的环境变量有不同的用户。 一般是用来指定操作…...
文件系统相关
文件系统部分的大纲要求: 文件系统的全局结构:文件系统在外存中的结构,文件系统在内存中的结构外存空闲空间管理办法虚拟文件系统文件系统挂载 一、文件系统的层次结构 可分为三个层次:最低层是对象及其属性,中间层…...
edm邮件开发信模板
现在很多从事外贸的工作人员在寻找一些邮件模板,今天一米软件给大家总结了几套常用的开发新客户的邮件模板 开发新模板1: Hi Sir, Glad to hear that youre on the market for **. We specialize in this field for several years, with the strengt…...
边缘服务器的未来是什么?思考 5G 和 AI 需求
什么是边缘服务器 边缘服务器是一种分布式计算模式,旨在提高数据中心和云服务的效率,并解决设备之间通信的延迟问题。它将业务从中央数据中心转移到边缘设备附近,将计算、存储和网络资源靠近终端用户和设备,以实现更快速的数据处…...
老卫带你学---leetcode刷题(438. 找到字符串中所有字母异位词)
438. 找到字符串中所有字母异位词 问题: 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。 …...
unity中使用protobuf工具将proto文件转为C#实体脚本
unity中使用protobuf工具将proto文件转为C#实体脚本 介绍优点缺点Protobuf 为什么比 XML 快得多?Protobuf的EncodingProtobuf封解包的过程通常编写一个Google Protocol Buffer应用需要以下几步: Protostuff是什么Protobuf工具总结 介绍 protobuf也就是G…...
1024程序员狂欢节有好礼 | 前沿技术、人工智能、集成电路科学与芯片技术、新一代信息与通信技术、网络空间安全技术
🌹欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 1024程序员狂欢节有好礼 🚩🚩🚩点击直达福利前言一、IT技术 IT Technology《速学Linux:系统应用从入门到精通》《Pytho…...
常用Web安全扫描工具合集
漏洞扫描是一种安全检测行为,更是一类重要的网络安全技术,它能够有效提高网络的安全性,而且漏洞扫描属于主动的防范措施,可以很好地避免黑客攻击行为,做到防患于未然。那么好用的漏洞扫描工具有哪些? 1、A…...
Zoho Mail荣登福布斯小型企业企业邮箱排行榜
在过去的数十载里,电子邮件已成为电子通信领域中不可或缺的一环,而在未来的岁月里,它有望继续在全球范围内普及应用。尽管如今市场上有许多免费的企业邮箱供用户和企业选用,但其中许多产品在特定场景下的专业化功能尚显不足&#…...
Cave Cows 3
题目描述 约翰的 N (1≤N≤50000 )只牛在一个黑魃魃的洞里探险,他们只能通过叫声交流。 两只牛之间的曼哈顿距离决定了声音传播的时间。即牛1与牛2交流,需要的时间为 ∣x1−x2∣∣y1−y2∣ 。其中 −2≤106−106≤x1,x2,y1,y2≤106 。…...
别只打补丁了!聊聊Oracle 11.2.0.4在Windows上维护的那些事儿:补丁管理、版本兼容与OPatch工具详解
Oracle 11.2.0.4 Windows环境下的补丁管理艺术:从基础操作到战略规划 在Oracle数据库运维领域,补丁管理往往被视为一项基础性工作,但实际上它远不止是简单的"下载-安装-重启"流程。特别是在Windows平台上运行的Oracle 11.2.0.4版本…...
大模型落地卡在哪?:SITS2026圆桌实录揭示工程化人才缺口已达47.6%(附企业真实JD对标清单)
第一章:SITS2026圆桌:大模型工程化人才需求 2026奇点智能技术大会(https://ml-summit.org) 工程化落地的核心能力断层 在SITS2026圆桌讨论中,来自头部AI基础设施厂商、金融与医疗垂类企业的CTO一致指出:当前大模型项目失败主因并…...
Vue.js组件通信Props在函数式组件中传递与性能表现分析
函数式组件通过 context.props 显式接收 props,不支持响应式绑定、v-model 和自定义事件;需父组件传入回调函数,适用于纯展示型静态节点,Vue 3 中已废弃。Vue.js 中函数式组件(Functional Components)本身不…...
绝区零自动化助手终极指南:如何实现游戏全自动一条龙服务
绝区零自动化助手终极指南:如何实现游戏全自动一条龙服务 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon 还在为…...
人流量统计测试视频获取方式
1 打开国外摄像头网站 https://riat-.blog.csdn.net/article/details/156447639?spm1011.2415.3001.5331 2 使用ubuntu自带录屏软件 Ctrl shift alt R 就可以开始录屏 停止录屏:打开屏幕右下角,停止录屏...
Revit 2026从零到一:一站式下载、激活与授权实战指南(附资源包)【2025年】
1. Revit 2026下载全攻略 第一次接触Revit的朋友们,最头疼的往往不是软件操作,而是连门都进不去——找不到靠谱的下载资源。我见过太多人因为下载了带病毒的安装包,导致系统崩溃重装。今天我就手把手带大家避开这些坑,找到最安全的…...
Google 迎来「DeepSeek 时刻」:TurboQuant算法实现bit无损、×加速、×压缩、零预处理舅
从 UI 工程师到 AI 应用架构者 13 年前,我的工作是让按钮在 IE6 上对齐; 13 年后,我用 fetch-event-source 订阅大模型的“思维流”,用 OCR 解锁图片中的文字——前端,正在成为 AI 产品的第一道体验防线。 最近&#x…...
higress 这个中登才是AI时代的心头好搪
核心摘要:这篇文章能帮你 ?? 1. 彻底搞懂条件分支与循环的适用场景,告别选择困难。 ?? 2. 掌握遍历DOM集合修改属性的标准姿势与性能窍门。 ?? 3. 识别流程控制中的常见“坑”,并学会如何优雅地绕过去。 ?? 主要内容脉络 ?? 一、痛…...
推荐一款老师喜欢的强大工具:支持Win、鸿合、希沃大屏,非常实用!
聊一聊又是一年开学季。开学了发一些应时期的小软件。今天给大家分享一款学校班级课程表工具。这款工具可以投放在学校电子大屏上。支持学校的白板软件。软件介绍学校班级课程表工具界面清爽,信息能一目了然。虽然看感觉功能简单,但每个模板都可以进行设…...
如何快速掌握OCAuxiliaryTools:黑苹果配置的终极图形化指南
如何快速掌握OCAuxiliaryTools:黑苹果配置的终极图形化指南 【免费下载链接】OCAuxiliaryTools Cross-platform GUI management tools for OpenCore(OCAT) 项目地址: https://gitcode.com/gh_mirrors/oc/OCAuxiliaryTools 你是否在为黑…...
