SSM框架学习-AOP通知类型

news2024/11/16 14:20:50

在AOP中,通知(Advice)是对切点进行操作的方法,用于实现切面定义的具体逻辑。Spring框架支持五种类型的通知:

1. 前置通知(Before advice)

在连接点执行前,执行通知

@Before("****")

2. 后置通知(After advice)

在连接点执行后,执行通知

@After("****")

3. 返回通知(After returning advice)(了解)

在连接点正常执行完毕返回后,执行通知,如果抛异常的话就不会执行

4. 异常通知(After throwing advice)

在连接点抛出异常后,执行通知

5. 环绕通知(Around advice)(最常用的)

在连接点执行前后,执行通知。环绕通知可以完全控制连接点的执行,包括决定是否执行连接点以及在哪个时点执行连接点;
包围一个连接点的通知,类似 Web 中 Servlet规范中的 Filter 的 doFilter 方法。可以在方法的调用前后完成自定义的行为,也可以选择不执行

第一种:没有返回值的

    //@Around:环绕通知,在原始方法运行的前后执行
    @Around("pt()")
    public Object around(ProceedingJoinPoint pjp) throws Throwable {
        System.out.println("around before advice ...");
        //表示对原始操作的调用
        Object ret = pjp.proceed();
        System.out.println("around after advice ...");
        return ret;
    }

第二种:有返回值的

环绕通知,对于有返回值的记得接收它的返回值并返回

    @Around("pt2()")
    public Object aroundSelect(ProceedingJoinPoint pjp) throws Throwable {
        System.out.println("around before advice ...");
        //表示对原始操作的调用
        Integer ret = (Integer) pjp.proceed();
        System.out.println("around after advice ...");
        return ret;
    }

在这里插入图片描述

需要注意的是,通知类型只是概念上的区分,实现上通知并没有过多的差异。所有的通知都可以被绑定到连接点上,并在连接点执行前、后或中间被调用。

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

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

相关文章

【跟着陈七一起学C语言】今天总结:C语言的结构体和其它数据形式

友情链接:专栏地址 知识总结顺序参考C Primer Plus(第六版)和谭浩强老师的C程序设计(第五版)等,内容以书中为标准,同时参考其它各类书籍以及优质文章,以至减少知识点上的错误&#x…

OpenGL高级-立方体贴图

运行效果 源代码 着色器 渲染物体的顶点着色器: #version 330 core // 传入局部坐标下的顶点坐标 layout( location 0 ) in vec3 position; layout (location 1) in vec2 texCoords;// 传入变换矩阵 uniform mat4 model; uniform mat4 view; uniform mat4 proje…

d2l的一些理论知识的整理【1】

目录 考试知识整理引言2 预备知识2.1. 数据操作2.2. 数据预处理2.3. 线性代数2.4. 微积分2.5. 自动微分2.6. 概率2.7. 查阅文档 3 线性神经网络3.1. 线性回归3.2. 线性回归的从零开始实现3.3. 线性回归的简洁实现3.4. softmax回归3.5. 图像分类数据集3.6. softmax回归的从零开始…

AT24C16页写和多页写

AT24C16 2K字节(存储内存) 128(页面数)* 16 (每页的字节数) 2^11 (寻址地址位数 11位)。 AT24C16有128(2^7128)页只需要7位地址,分为高3位和低4位,高3位在设备地址中,低4位在字地址中。 设备…

Flutter GetX Tag 属性使用详解

Flutter GetX Tag 属性使用详解 了解 Flutter GetX Tag 属性的定义、用途、实现方式和常见问题。 前言 Flutter中,GetX是一款非常流行的状态管理库。它不仅提供了状态管理的功能,还有路由、依赖注入和许多其他功能。在这篇文章中,我将介绍如…

Node.js简易教程

目录 介绍 fs模块 演示 writeFile 异步写入 appendFile/appendFileSync 追加写入 createWriteStream流式写入 readFile异步读取文件/readFileSync同步读取文件 createReadStream流式读取 文件移动与重命名 文件删除 http模块 创建服务 url 格式化 获取静态文件服务 node模…

“卷爆了“的IT互联网行业,为啥至今还有人头铁往里冲?

细数互联网过往的发展史,造就了成千上万的企业家、创业者,众多职场人趋之若鹜地选择互联网行业,想从这个领域捞一桶金。 但不知道从什么时候开始,一篇篇关于互联网红利消失,流量枯竭的文章接踵而至,现在转…

没关系,前端还死不了

前言 网络上的任何事情都可以在《乌合之众》书中找到答案。大众言论没有理性,全是极端,要么封神,要么踩死。不少人喷前端,说前端已死?前端内卷?前端一个月800包吃住? 对此我想说,“…

【python】批量采集次元岛cos美图,只是为了学习~

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 这里写目录标题 前言开发环境:模块使用:代码展示美图欣赏尾语 💝 开发环境: Python 3.8 Pycharm 模块使用: 第三方模块 需要安装 在cmd里面 进行 pip install requests requests >>> 数据请求模块 …

ACWING 高精度-加减乘除 791 - 794

读取字符串的高精度数字,然后用int数组存上,通过最基础的每位加减乘除和进位等操作完成。 下方给出了所有的操作函数,注意函数的所有输入均为vector 的数组,并且数组存储是从数的低位开始存1000 [0,0,0,1],和正常存储…

Linux -- 进阶 Web服务器 虚拟主机 -- 基于端口号

虚拟主机 一个Web 服务器,如果只能运行一个网站的话,那么对于一些经费不是很足的小公司来说, 那就有些奢侈了,资源没有办法完全利用上 ( 无论是 内存,CPU,硬盘,带宽等等 &#xff09…

EIScopus检索 | 2023年智能交通与未来出行国际会议(CSTFM 2023)

会议简介 Brief Introduction 2023年智能交通与未来出行国际会议(CSTFM 2023) 会议时间:2023年7月28日-30日 召开地点:中国长沙 大会官网: CSTFM 2023-2023 International Conference on Smart Transportation and Future Mobility(CSTFM 202…

OpenCL编程指南-3.3矢量数据类型

矢量数据类型 OpenCL C还增加了对矢量数据类型的支持。矢量数据类型如下定义,首先是类型名,具体包括char、uchar、short、ushort、int、uint、float、long或ulong,后面是一个字面值n来定义矢量中的元素个数。对于所有矢量数据类型&#xff0…

母亲节快到了,祝所有母亲节日快乐!Happy Mother‘s Day

《游子吟》唐孟郊 慈母手中线,游子身上衣。 临行密密缝,意恐迟迟归。 谁言寸草心,报得三春晖。 My kind mother has a needle and thread in her hand,Making new clothes for her son who is to travel far away. She is busy sewing c…

FE_Vue学习笔记 Vue监视数据的原理

1 通过更新时的一个问题-this.personList[0] { 更新值 } 不起作用 引入 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script type"text/javascript" src"…

每日一博 - 闲聊“突发流量”的应对之道

文章目录 概述思路 概述 面对“突发流量”的情况,我会采取以下应急措施: 扩容现有资源。这是最直接和最常用的方法。可以通过增加CPU、内存、节点等来扩容。典型案例是双11等大促期间,阿里会大规模扩容幕布等系统以应对流量激增。横向扩展,增加更多服务器或节点。通过增加服务…

lambda处理异常四种方式

最近对接第三方呼叫系统&#xff0c;第三方SDK的所有方法里都有异常抛出&#xff0c;因为用到了lambda&#xff0c;所以异常处理还是很必要的。 本文主要用到了四种解决方案&#xff1a; 直接代码块处理自定义函数式接口&#xff0c;warp静态方法通过Either 类型包装通过Pair 类…

目前收集到好用且免费的ChatGPT镜像站

ChatGPT是一个基于人工智能的聊天机器人&#xff0c;它可以与用户进行自然语言交互。ChatGPT使用了最新的自然语言处理技术&#xff0c;包括深度学习和神经网络&#xff0c;以便更好地理解用户的意图和回答用户的问题。 ChatGPT可以回答各种问题&#xff0c;包括但不限于常见问…

Linux——进程信号2

阻塞信号 信号其他相关常见概念 实际执行信号的处理动作称为信号递达(Delivery) 信号从产生到递达之间的状态,称为信号未决(Pending)。 进程可以选择阻塞 (Block )某个信号。 被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作. 注意,阻塞和忽略…

一文4000字用Jmeter +Maven+jenkins实现接口性能全自动化测试

背景&#xff1a; 首先用jmeter录制或者书写性能测试的脚本&#xff0c;用maven添加相关依赖&#xff0c;把性能测试的代码提交到github&#xff0c;在jenkins配置git下载性能测试的代码&#xff0c;配置运行脚本和测试报告&#xff0c;配置运行失败自动发邮件通知&#xff0c…