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

相关文章

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切面:一个分布在应用程序中多个位置

AOP之执行前通知@Before

Spring AOP之执行前通知@Before 此文章说一下执行前通知,即注解@Before。 作用 多用于日志记录、权限校验、初始化资源等。 触发时间 目标函数执行触发。 定义 public class AopBeforeAspect {@Before("execution(public * com.example.demo.service.impl.AccountServiceI

ajax xmlhttprequest使用post传参数并向后台获取数据

ajax xmlhttprequest向后台传数据有两种方式,一种是直接在地址URL后面加入参数,后台用Request.QueryString来获取,另外一种是采用POST来传,send方法发送参数对,比如send("a=3&b=4"),后台用Request.Form[“a”]来获取3,同理Request.Form["b"]获取4   前台代码: <%@ Page Titl

安卓8.0通知栏适配

一、谷歌为什么在安卓8.0对通知栏进行修改         系统通知栏作为除桌面启动图标之外的唯一入口,对app的日活起到非常重要的作用,因此各个app开发商都希望能抢占用户的通知栏。随着移动端的普及和安卓手机存储容量的扩大,用户手机能安装的app数量越来越多,一台手机安装几十到上百个app已经不足为奇,各个app都极尽可能的抢占通知栏,而安卓系统本身又没有一种规范来约束app开发商的这种行为,