SpringAOP面向切面编程 通知类型

一、通知类型

@Around:环绕通知,此注解标注的通知方法在目标方法前、后都被执行

@Before:前置通知,此注解标注的通知方法在目标方法前被执行

@After:后置通知,此注解标注的通知方法在目标方法后被执行,无论是否有异常都会执行

@AfterReturning:返回后通知,此注解标注的通知方法在目标方法后被执行,有异常不会执行

@AfterThrowing:异常后通知,此注解标注的通知方法发生异常后执行

二、注意事项

1、@Around环绕通知需要自己调用proceedingJoinPoint.proceed()来让原始方法执行,其他通知不需要考虑目标方法执行

2、@Around环绕通知方法的返回值,必须指定Object,来接收原始方法的返回值

三、抽取切入点表达式

@PointCut:将公共的切点表达式抽取出来,需要用到时引用该切点表达式即可

public class MyAspect1 {@Pointcut("execution(* com.itheima.service.impl.DeptServiceImpl.*(..))")public void pt(){}@Before("pt()")public void before(){log.info("before");
}
}

四、代码实现

 @Before("pt()")public void before(){log.info("before");}
 @Around("execution(* com.itheima.service.impl.DeptServiceImpl.*(..))")public Object around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {log.info("around before");//调用目标对象的原始方法执行Object result=proceedingJoinPoint.proceed();log.info("around after");return result;}
@After("execution(* com.itheima.service.impl.DeptServiceImpl.*(..))")public void after(){log.info("after");}
 @AfterReturning("execution(* com.itheima.service.impl.DeptServiceImpl.*(..))")public void afterReturning(){log.info("afterReturning");}
 @AfterThrowing("execution(* com.itheima.service.impl.DeptServiceImpl.*(..))")public void afterThrowing(){log.info("afterThrowing");}

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

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

相关文章

Linux-tomcat环境搭建、jpress部署实践、nginx反向代理

♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏&#xf…

分类评估指标

文章目录 1. 混淆矩阵2. Precision(精准率)3. Recall(召回率)4. F1-score5. ROC曲线和AUC指标5.1 ROC 曲线5.2 绘制 ROC 曲线5.3 AUC 值6. API介绍6.1 **分类评估报告api**6.2 **AUC计算API**练习-电信客户流失预测1. 数据集介绍2. 处理流程3. 案例实现4. 小结1. 混淆矩阵

ElasticSearch学习--RestClient及案例

目录 RestClient查询文档 快速入门 总结 全文检索(match)查询 精确查询 复合查询 查询总结 排序,分页 高亮 RestClient查询文档 快速入门 总结 全文检索(match)查询 多种查询的差异都在做类型和条件上&#x…

[SQL挖掘机] - HAVING语句

经过对分组函数 group by的介绍, 往往少不了having, 所以这篇文章主要介绍having语句. group by分组函数可以查看如下链接; https://tongjier.blog.csdn.net/article/details/131885281 介绍: having 是用于在 group by 查询中对分组结果进行过滤的子句。它允许我们在分组之后…

数据可视化——如何绘制地图

文章目录 前言如何绘制地图添加配置项 根据已有数据绘制地图整体代码展示 前言 前面我们学习了如何利用提供的数据来对数据进行处理,然后以折线图的形式展现出来,那么今天我将为大家分享如何将提数据以地图的形式展现。 如何绘制地图 前面我们绘制折线…

如何从gitee上下载项目并把它在本地运行起来

有时候我们会想到在gitee上下载下来项目,那么怎么把项目下载到本地并跑起来呢? 第一步:在git上找到你想要克隆下来的项目,按照如下操作复制项目地址连接,如下图: 以上可以选择HTTPS和SSH两种形式。 第二步…

REST和RPC的区别

1 REST REST 不是一种协议,它是一种架构。大部分REST的实现中使用了RPC的机制,大致由三部分组成: method:动词(GET、POST、PUT、DELETE之类的)Host:URI(统一资源标识)&…

Hologres SQL

1.SQL基础 1.1 DDL 创建数据库 CREATE DATABASE db_name [[WITH] OWNER [] user_name];创建者自动成为新DB的owner用户需要有CREATEDB权限(或者superuser) 删除数据库 DROP DATABASE [IF EXISTS] db_name;只有该数据库的superuser或者该db的owner才…

jmeter压测过程中,ServerAgent响应异常:Cannot send data to network connection

ServerAgent异常信息: Cannot send data to network connection(无法将数据发送到网络连接) 原因: linux 防火墙 拦截了当前端口 解决方案: Linux 执行以下命令 /sbin/iptables -I INPUT -p tcp --dport 4445 -j ACC…

数学建模入门-如何从0开始,掌握数学建模的基本技能

一、前言 本文主要面向没有了解过数学建模的同学,帮助同学们如何快速地进行数学建模的入门并且尽快地在各类赛事中获奖,或者写出优秀的数学建模论文。 在本文中,我将从什么是数学建模、数学建模的应用领域、数学建模的基本步骤、数学建模的技…

【python】如何包装 numpy 的数组

一、说明 Numpy的数组是强大的对象,通常用作更复杂的对象(如pandas或xarray)的基本数据结构。话虽如此,您当然也可以在自己的类中使用numpy的强大数组 - 为此,您基本上有2种方法: 子类方法:创建…

【动手学深度学习】--12.深度卷积神经网络AlexNet

文章目录 深度卷积神经网络AlexNet1.AlexNet2.模型设计3.激活函数4.模型实现5.读取数据集6.训练AlexNet 深度卷积神经网络AlexNet 学习视频:深度卷积神经网络 AlexNet【动手学深度学习v2】 官方笔记:深度卷积神经网络(AlexNet) …

Android 中 app freezer 原理详解(一):R 版本

基于版本:Android R 0. 前言 在之前的两篇博文《Android 中app内存回收优化(一)》和 《Android 中app内存回收优化(二)》中详细剖析了 Android 中 app 内存优化的流程。这个机制的管理通过 CachedAppOptimizer 类管理,为什么叫这个名字,而不…

【Linux | Shell】结构化命令2 - test命令、方括号测试条件、case命令

目录 一、概述二、test 命令2.1 test 命令2.2 方括号测试条件2.3 test 命令和测试条件可以判断的 3 类条件2.3.1 数值比较2.3.2 字符串比较 三、复合条件测试四、if-then 的高级特性五、case 命令 一、概述 上篇文章介绍了 if 语句相关知识。但 if 语句只能执行命令&#xff0c…

Docker 的数据管理、容器互联、镜像创建

目录 一、数据管理 1.数据卷 2. 数据卷容器 二、容器互联(使用centos镜像) 三、Docker 镜像的创建 1.基于现有镜像创建 1.1首先启动一个镜像,在容器里修改 1.2将修改后的容器提交为新的镜像,需使用该容器的id号创建新镜像 …

JAVA SE -- 第十天

(全部来自“韩顺平教育”) 一、枚举(enumeration,简写enum) 枚举是一组常量的集合 1、实现方式 a.自定义类实现枚举 b.使用enum关键字实现枚举 二、自定义类实现枚举 1、注意事项 ①不需要提供setXxx方法&#xff…

HTTP、HTTPS协议详解

文章目录 HTTP是什么报文结构请求头部响应头部 工作原理用户点击一个URL链接后,浏览器和web服务器会执行什么http的版本持久连接和非持久连接无状态与有状态Cookie和Sessionhttp方法:get和post的区别 状态码 HTTPS是什么ssl如何搞到证书nginx中的部署 加…

【从删库到跑路】MySQL数据库的索引(一)——索引的结构(BTree B+Tree Hash),语法等

🎊专栏【MySQL】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 🥰欢迎并且感谢大家指出小吉的问题 文章目录 🍔概述🍔索引结构⭐B-Tree多路平衡查找树🏳️‍&a…

【iOS】weak关键字的实现原理

前言 关于什么是weak关键字可以去看看我以前的一篇博客:【OC】 属性关键字 weak原理 1. SideTable SideTable 这个结构体,前辈给它总结了一个很形象的名字叫引用计数和弱引用依赖表,因为它主要用于管理对象的引用计数和 weak 表。在 NSOb…

(笔记)快速排序

快速排序 快速排序是一种常用的排序算法。它的时间复杂度为O(nlogn),并且在实际应用中表现良好。快速排序的基本思想是通过选择一个基准数,将数组分成两个子数组,比基准数小的放在左边,比基准数大的放在右边,然后对左…