当前位置: 首页 > news >正文

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 在动态代理中要想添加一个额外功能&#xff0c;只要去实现MethodBeforeAdvice这个接口就行了&#xff0c;但是实现了这个接口的额外功能只能运行在目标类执行之前&#xff0c;如果是想在目标类执行之后呢&#xff1f;那这个需求就完成不了&#xff0c;所…...

【网络】HTTPS讲解(侧重于加密、秘钥、证书的讲解)

HTTPS讲解 前言正式开始安全HTTP和HTTPS的关系什么是加密和解密为什么要加密运营商劫持中间人 常⻅的加密⽅式对称加密⾮对称加密 数据摘要数字签名HTTPS 的⼯作过程⽅案 1 - 只使⽤对称加密&#xff08;不可靠&#xff09;⽅案 2 - 只使⽤⾮对称加密&#xff08;不可靠&#x…...

absolute 定位

关于CSS的一些学习记录 absolute定位类型 语法staticrelative 相对定位absolute 绝对定位fixed 固定定位stick 粘性定位 absolute CSS postion属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则决定了该元素的最终位置。 定位类型 定位元素是其计算后…...

比亚迪、吉利、蔚来等将出席2023第四届中国新能源汽车热管理峰会

会议背景 2023第四届中国新能源汽车热管理创新国际峰会将于11月16日-17日在上海举办。会议线上线下同步举行&#xff0c;会场提供中英同声传译。 本次峰会将密切关注“双碳”目标下中国新能源汽车一体化热管理的最新行业动态与关键技术的研发和应用方案。会议将对中国新能源汽…...

OJ第五篇

文章目录 用队列实现栈用栈实现队列设计循环队列 用队列实现栈 链接&#xff1a;用队列实现栈 这道题是让我们用两个队列实现一个栈&#xff0c;简单来说&#xff0c;就是利用队列来实现一个先入后出的功能&#xff0c;我们知道队列是先入先出&#xff0c;如何用两个队列来实…...

【论文解读】Parameter-Efficient Transfer Learning for NLP

一. 介绍 1.1 为什么要引入Adapter 在存在许多下游任务的情况下&#xff0c;微调的参数效率很低:每个任务都需要一个全新的模型。作为替代方案&#xff0c;我们建议使用适配器模块进行传输。 1.2 论文目标 目标是建立一个在所有这些方面都表现良好的系统&#xff0c;但不需…...

星途星纪元 ES,用艺术思维表达工程技术

10月8日&#xff0c;星途星纪元ES携手世界级成都爱乐首席乐团、旅德青年钢琴家王超&#xff0c;在成都打造了一场“万物星声”超舒适音乐会视听盛宴。这是星途星纪元首次跨界音乐圈、牵手音乐挚友&#xff0c;共同演绎音乐和汽车的美学协奏曲&#xff0c;开启高端超舒适美学新纪…...

【Java 进阶篇】深入了解 Bootstrap 插件

Bootstrap 是一个流行的前端框架&#xff0c;提供了各种强大的插件&#xff0c;用于增强网页和应用程序的功能和交互性。本篇博客将深入介绍 Bootstrap 插件&#xff0c;适用于那些刚刚开始学习前端开发的小白。 什么是 Bootstrap&#xff1f; 在深入探讨 Bootstrap 插件之前…...

VMware17.0安装教程(2023最新最详细)

目录 一.简介 二.安装步骤 软件&#xff1a;VMware版本&#xff1a;17.0语言&#xff1a;简体中文大小&#xff1a;554.98M安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.6GHz 内存4G(或更高&#xff09;下载通道①百度网盘丨下载链接&#xff1a; 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 最核心概念&#xff0c;通过创建 Service,可以为一组具有相同功能的容器应 用提供一个统…...

深入篇【Linux】学习必备:进程环境变量/进程切换

深入篇【Linux】学习必备&#xff1a;进程环境变量/进程切换 Ⅰ.环境变量Ⅱ.深层意义Ⅲ.全局属性Ⅳ.进程切换 Ⅰ.环境变量 1.环境变量是什么&#xff1f;&#xff1a;环境变量是系统提供的一组name/value形式的变量&#xff0c;不同的环境变量有不同的用户。 一般是用来指定操作…...

文件系统相关

文件系统部分的大纲要求&#xff1a; 文件系统的全局结构&#xff1a;文件系统在外存中的结构&#xff0c;文件系统在内存中的结构外存空闲空间管理办法虚拟文件系统文件系统挂载 一、文件系统的层次结构 可分为三个层次&#xff1a;最低层是对象及其属性&#xff0c;中间层…...

edm邮件开发信模板

现在很多从事外贸的工作人员在寻找一些邮件模板&#xff0c;今天一米软件给大家总结了几套常用的开发新客户的邮件模板 开发新模板1&#xff1a; Hi Sir, Glad to hear that youre on the market for **. We specialize in this field for several years, with the strengt…...

边缘服务器的未来是什么?思考 5G 和 AI 需求

什么是边缘服务器 边缘服务器是一种分布式计算模式&#xff0c;旨在提高数据中心和云服务的效率&#xff0c;并解决设备之间通信的延迟问题。它将业务从中央数据中心转移到边缘设备附近&#xff0c;将计算、存储和网络资源靠近终端用户和设备&#xff0c;以实现更快速的数据处…...

老卫带你学---leetcode刷题(438. 找到字符串中所有字母异位词)

438. 找到字符串中所有字母异位词 问题&#xff1a; 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串&#xff08;包括相同的字符串&#xff09;。 …...

unity中使用protobuf工具将proto文件转为C#实体脚本

unity中使用protobuf工具将proto文件转为C#实体脚本 介绍优点缺点Protobuf 为什么比 XML 快得多&#xff1f;Protobuf的EncodingProtobuf封解包的过程通常编写一个Google Protocol Buffer应用需要以下几步&#xff1a; Protostuff是什么Protobuf工具总结 介绍 protobuf也就是G…...

1024程序员狂欢节有好礼 | 前沿技术、人工智能、集成电路科学与芯片技术、新一代信息与通信技术、网络空间安全技术

&#x1f339;欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 1024程序员狂欢节有好礼 &#x1f6a9;&#x1f6a9;&#x1f6a9;点击直达福利前言一、IT技术 IT Technology《速学Linux&#xff1a;系统应用从入门到精通》《Pytho…...

常用Web安全扫描工具合集

漏洞扫描是一种安全检测行为&#xff0c;更是一类重要的网络安全技术&#xff0c;它能够有效提高网络的安全性&#xff0c;而且漏洞扫描属于主动的防范措施&#xff0c;可以很好地避免黑客攻击行为&#xff0c;做到防患于未然。那么好用的漏洞扫描工具有哪些&#xff1f; 1、A…...

Zoho Mail荣登福布斯小型企业企业邮箱排行榜

在过去的数十载里&#xff0c;电子邮件已成为电子通信领域中不可或缺的一环&#xff0c;而在未来的岁月里&#xff0c;它有望继续在全球范围内普及应用。尽管如今市场上有许多免费的企业邮箱供用户和企业选用&#xff0c;但其中许多产品在特定场景下的专业化功能尚显不足&#…...

Cave Cows 3

题目描述 约翰的 N (1≤N≤50000 )只牛在一个黑魃魃的洞里探险&#xff0c;他们只能通过叫声交流。 两只牛之间的曼哈顿距离决定了声音传播的时间。即牛1与牛2交流&#xff0c;需要的时间为 ∣x1​−x2​∣∣y1​−y2​∣ 。其中 −2≤106−106≤x1​,x2​,y1​,y2​≤106 。…...

Python3.10镜像使用全解析:Jupyter和SSH两种方式,满足不同开发需求

Python3.10镜像使用全解析&#xff1a;Jupyter和SSH两种方式&#xff0c;满足不同开发需求 1. Python3.10镜像概述 Python3.10镜像是一个基于Miniconda的轻量级Python环境管理工具&#xff0c;它提供了Python 3.10的核心运行环境以及常用的开发工具。这个镜像特别适合需要快速…...

丹青幻境常见问题解决:显存不足、脸部模糊?看这篇就够了

丹青幻境常见问题解决&#xff1a;显存不足、脸部模糊&#xff1f;看这篇就够了 1. 问题概述与快速诊断 丹青幻境作为一款基于Z-Image架构的数字艺术创作工具&#xff0c;在使用过程中可能会遇到一些技术问题。本文将重点解决两个最常见的问题&#xff1a;显存不足导致的运行…...

终极指南:如何安全迁移艾尔登法环游戏存档

终极指南&#xff1a;如何安全迁移艾尔登法环游戏存档 【免费下载链接】EldenRingSaveCopier 项目地址: https://gitcode.com/gh_mirrors/el/EldenRingSaveCopier 你是否曾经因为更换电脑或重装系统而担心丢失《艾尔登法环》数十小时的游戏进度&#xff1f;手动复制存档…...

【车辆】simulink自动驾驶赛车基于快速探索随机树的路径规划【含Matlab源码 15318期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab领域博客之家&#x1f49e;&…...

从CARRY4到高效加法器:揭秘FPGA进位链的优化实践

1. 从半加器到全加器&#xff1a;加法器的底层逻辑 第一次接触FPGA加法器设计时&#xff0c;我也被各种专业术语搞得晕头转向。直到有一天&#xff0c;我把加法器想象成小学生列竖式计算&#xff0c;突然就豁然开朗了。想象你在纸上计算1219&#xff0c;是不是要从右往左一位一…...

“你用AI,那我也会用AI,我还要你干什么?”复

这个代码的核心功能是&#xff1a;基于输入词的长度动态选择反义词示例&#xff0c;并调用大模型生成反义词&#xff0c;体现了 “动态少样本提示&#xff08;Dynamic Few-Shot Prompting&#xff09;” 与 “上下文长度感知的示例选择” 的能力。 from langchain.prompts impo…...

Python——排序

排序一、sorted() 函数&#xff08;推荐&#xff09;对字典列表排序&#xff08;工作超常用&#xff09;二、list.sort()三、手写快速排序四、高级用法&#xff1a;按指定条件排序1. 按字符串长度2. 按数字绝对值3. 按对象/字典某个字段&#xff08;接口/测试数据常用&#xff…...

SwiftUI DatePicker实战:打造一个旅行计划App(含完整代码)

SwiftUI DatePicker实战&#xff1a;构建旅行计划App的进阶技巧 每次规划旅行时&#xff0c;最让人头疼的莫过于安排行程日期。作为iOS开发者&#xff0c;我们可以用SwiftUI的DatePicker组件为用户打造流畅的日期选择体验。不同于基础教程&#xff0c;本文将带你深入实战&…...

UE5 Modify Curve 蓝图节点:五种 Apply Modes 的实战应用解析

1. Modify Curve节点基础&#xff1a;动画曲线的动态操控利器 在UE5动画系统中&#xff0c;Modify Curve节点就像给动画师配了把瑞士军刀。我去年做角色表情动画时&#xff0c;发现传统的关键帧调整方式效率太低&#xff0c;直到用上这个节点才真正体会到实时操控曲线值的快感。…...

Gofile下载器终极指南:3倍速度轻松下载大文件

Gofile下载器终极指南&#xff1a;3倍速度轻松下载大文件 【免费下载链接】gofile-downloader Download files from https://gofile.io 项目地址: https://gitcode.com/gh_mirrors/go/gofile-downloader 想要从Gofile快速下载大型文件却总是被慢速和中断困扰&#xff1f…...