0
点赞
收藏
分享

微信扫一扫

Python学习打卡:day11

小编 2024-06-21 阅读 38
java

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();
    }
举报

相关推荐

蓝桥杯打卡Day11

Linux学习-DAY11

Java学习-Day11

C++学习 Day11

总结-day11

HTML入门DAY11

0 条评论