Spring-12-Aspect深入

1.使用Aspect的参数JoinPoint

    /**
     * 做一个有参数的切面函数
     * <p>
     * 指定通知方法的参数:JoinPoint
     * <p>
     * 作用是:在这个方法执行的时候,这个方法把它的所有信息传给这个代理,这个代理通过JoinPoint获取参数
     * JoinPoint是由框架赋值的,不要手动,赋值,但是必须得是第一个位置,就是这个函数可以有多个参数
     * 但是使用JoinPoint必须是放在第一个函数里面
     */
    @After(value = "execution(public void org.example.ba1.SomeServiceImpl.doSome(String,Integer))")
    public void myLater(JoinPoint jp) {

        System.out.println("获取他的定义方法" + jp.getSignature());
        System.out.println("方法的名称" + jp.getSignature().getName());
        //获取方法的参数,是一个object的数组
        Object args[] = jp.getArgs();
        for (Object age : args) {
            System.out.println("参数" + age);
        }

在这里插入图片描述

2.使用后置通知@AfterReturning

	/**
	     * 后置通知,这个value是切入点,之后的returning是切入点的这个函数执行后返回的object类型的对象
	     * 这个@AfterReturning的returning的值必须要和下面的函数的参数名称相同
	     * @param res
	     */
	    @AfterReturning(value="execution(* *..doOther(..))",returning = "res")
	    public void myAfterReturning(String res){
	        System.out.println("==============后置通知===============");
	        System.out.println("这是个后置通知,获取的返回值是"+res);
	        //可以修改返回值
	        
	    }
	    @AfterReturning(value="execution(* *..myStudent(..))",returning = "res")
	    public void myAfterReturning1(Student res){
	        System.out.println("==============对象后置通知===============");
	        System.out.println("这是个后置通知,获取的返回值是"+res);
	        //可以修改返回值
	        res.setName("傻大个");
	
	    }

在这里插入图片描述

3.环绕通知@Around

1.环绕通知是在函数执行前后,而不是里面执行的一些功能等同于@After和@Before配个使用

2.有一个参数ProceedingJoinPoint,用来是否执行函数的使用(执行方法proceed())

3.有返回类型,建议是object

4.使用过程

第一步:定义object类型
object result;
第二步:获取参数
Object args[]=ProceedingJoinPoint参数名.getArgs();
参数转换
resule=ProceedingJoinPoint参数名.proceed(参数··);
第三步:可以修改结果
直接result=XXX;
return result;

5.特点:是用来做事务的

4.异常处理@AfterThrowing

特点

在这里插入图片描述

格式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

执行方式

在这里插入图片描述

在这里插入图片描述

5.最终通知@After

格式

在这里插入图片描述

在这里插入图片描述

6.切入点表达式@Pointcut

在这里插入图片描述
在这里插入图片描述

6.其他

在这里插入图片描述

<aop:aspectj-autoproxy proxy-target-class="true"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码浪人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值