3.4 SpringAOP之通知获取数据

2024-06-20 22:20

本文主要是介绍3.4 SpringAOP之通知获取数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.JoinPoint和ProceedingJoinPoint接口

接口定义功能适用通知类型
JoinPoint代表了在程序执行过程中的连接点获取到连接点(被拦截方法)的名称、参数、目标对象以及代理对象等信息前置、后置、返回后、抛出异常后通知
ProceedingJoinPoint是 JoinPoint 接口的子接口,除了继承了 JoinPoint 的所有功能外,还增加了一个非常关键的方法 proceed()通过 proceed() 方法,可以决定是否继续执行被拦截的方法以及如何执行环绕通知

2.通知获取数据分类

分类适用通知类型
获取参数前置、后置、环绕、返回后、抛出异常后通知
获取切入点方法返回值环绕、返回后通知
获取切入点方法运行异常信息环绕、抛出异常后通知

3.获取参数

(1)前置、后置、返回后、抛出异常后通知

    @Before("切入点方法名()")public void advice(JoinPoint jp) {// 获取切入点方法参数Object[] args = jp.getArgs();}

(2)适用于环绕通知

  	@Around("切入点方法名()")public Object advice(ProceedingJoinPoint pjp) throws Throwable {// 获取切入点方法参数Object[] args = pjp.getArgs();}

4.获取返回值

(1)环绕通知

	@Around("切入点方法名()")public Object aroundAdvice(ProceedingJoinPoint pjp) throws Throwable {// 对原始操作的调用,并接收其返回值Object proceed = pjp.proceed();return proceed;}

(2)返回后通知
注:如果返回后通知同时获取参数和返回值,通知的形参必须是JoinPoint形参在前,接收返回值的形参在后

	@AfterReturning(value = "切入点方法名()" ,returning = "ret(通知方法中用来接收返回值的形参名)")public void afterReturning(Object ret) {System.out.println("返回后通知获取切入点方法返回值:" + ret);}

5.获取异常

(1)环绕通知

    @Around("切入点方法名()")public Object aroundAdvice(ProceedingJoinPoint pjp) {Object proceed = null;try {proceed = pjp.proceed();} catch (Throwable e) {e.printStackTrace();}return proceed;}

(2)抛出异常后通知

 	@AfterThrowing(value = "切入点方法名()", throwing = "e(通知方法中用来接收异常的形参名)")public void afterThrowing(Throwable e){e.printStackTrace();}

这篇关于3.4 SpringAOP之通知获取数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1079415

相关文章

如何关闭Mac的Safari通知? 3招教你关闭Safari浏览器网站通知的技巧

《如何关闭Mac的Safari通知?3招教你关闭Safari浏览器网站通知的技巧》当我们在使用Mac电脑专注做一件事情的时候,总是会被一些消息推送通知所打扰,这时候,我们就希望关闭这些烦人的Mac通... Safari 浏览器的「通知」功能本意是为了方便用户及时获取最新资讯,但很容易被一些网站滥用,导致我们

Java 的 Condition 接口与等待通知机制详解

《Java的Condition接口与等待通知机制详解》在Java并发编程里,实现线程间的协作与同步是极为关键的任务,本文将深入探究Condition接口及其背后的等待通知机制,感兴趣的朋友一起看... 目录一、引言二、Condition 接口概述2.1 基本概念2.2 与 Object 类等待通知方法的区别

嵌入式Linux驱动中的异步通知机制详解

《嵌入式Linux驱动中的异步通知机制详解》:本文主要介绍嵌入式Linux驱动中的异步通知机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、异步通知的核心概念1. 什么是异步通知2. 异步通知的关键组件二、异步通知的实现原理三、代码示例分析1. 设备结构

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

Mybatis从3.4.0版本到3.5.7版本的迭代方法实现

《Mybatis从3.4.0版本到3.5.7版本的迭代方法实现》本文主要介绍了Mybatis从3.4.0版本到3.5.7版本的迭代方法实现,包括主要的功能增强、不兼容的更改和修复的错误,具有一定的参考... 目录一、3.4.01、主要的功能增强2、selectCursor example3、不兼容的更改二、

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

一文详解Java Condition的await和signal等待通知机制

《一文详解JavaCondition的await和signal等待通知机制》这篇文章主要为大家详细介绍了JavaCondition的await和signal等待通知机制的相关知识,文中的示例代码讲... 目录1. Condition的核心方法2. 使用场景与优势3. 使用流程与规范基本模板生产者-消费者示例

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

springAOP 和 aspectJ 有什么区别

介绍 如今有多个可用的AOP库,这些组件需要回答一系列的问题: 是否与我现有的应用兼容?我在哪实现AOP?集成到我的应用是否很快?性能开销是多少? 本文中,我们将会着重回答这些问题,并介绍两款Java最流行的AOP框架:Spring AOP 和 AspectJ。 AOP概念 在我们开始之前,让我们对术语和核心概念做一个快速,高水平的回顾: Aspect切面:一个分布在应用程序中多个位置