栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

后置通知的流程分析与功能实现有哪些内容你还记得吗?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

后置通知的流程分析与功能实现有哪些内容你还记得吗?

目录

后置通知

后置通知@AfterReturning的流程分析​编辑

后置通知功能的基本实现

 后置通知可以改变目标返回值​编辑

 总结:


后置通知
  • 后置通知是在连接点完成之后执行的,即连接点返回结果或抛出异常的时候
  • 一个切面可以包括一个或者多个通知
  •     // 后置通知: 在目标方法执行后(无论是否发生异常),执行的通知
        // 在后置通知中还不能访问目标方法执行的结果
        @After("execution(public int com.young.spring.beans.aop.impl.ArithmeticCalculator.*(int,int))")
        public void afterMethod(JoinPoint joinPoint){
            String methodName = joinPoint.getSignature().getName();
            System.out.println("The method "+methodName+" ends");
        }
  • 后置通知, 在方法执行之后执行
  • 注意,无论方法是否抛出异常,后置通知都会被执行
  • 后置通知不能得到目标方法的返回值,返回值需要在返回通知中才能得到

后置通知@AfterReturning的流程分析

 

后置通知功能的基本实现

服务

 

 业务

 切面

 

测试

 

 后置通知可以改变目标返回值

 (首先创建maven项目,加入spring依赖,加入aspectj依赖,创建接口,创建目标类,创建切面,在切面中加入后置通知,修改返回值,运行观察方法的返回值是否被改变。)

创建一个学生类,并且使用构造方法 

在接口中写改变这个方法

 在SomeSever里面实现这些方法

再在切面方法中改变目标方法 

 

测试 

 

 总结:

spring中在后置通知中修改引用类型的返回值会影响最后的返回值。

@AfterReturning后置通知:

后置通知是在目标方法执行后切入切面功能,可以得到目标方法的返回值.如果目标方法的返回值是简单类型(8种基本类型+String)则不可改变.如果目标方法的返回值是引用类型则可以改变。
    

@Aspect
    @Component
    public class MyAspect {
        
        @AfterReturning(value = "execution(* com.bjpowernode.s02.*.*(..))",returning = "obj")
        public void myAfterReturning(Object obj){
            System.out.println("后置通知功能实现..............");
            if(obj != null){
                if(obj instanceof String){
                    obj = obj.toString().toUpperCase();
                    System.out.println("在切面方法中目标方法的返回值:"+obj);
                }
                if(obj instanceof Student){
                    Student stu = (Student) obj;
                    stu.setName("李四");
                    System.out.println("在切面方法中目标方法的返回值:"+stu);
                }
            }
        }
    }

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1028213.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号