Spring框架复习14-AOP通知类型前/后/环绕/异常/最终通知

<!--配置aop-->
    <aop:config>
        <!--配置切入点:也就是要给那个方法进行增强--><!--*表示返回类型为任意类型;..表示传递的参数为任意参数-->
        <aop:pointcut id="pointcut" expression="execution(* com.ctbu.dao.UserDao.save(..))"/>
        <aop:pointcut id="pointcutUpdate" expression="execution(* com.ctbu.dao.UserDao.update(..))"/>
        <aop:pointcut id="pointcutDelete" expression="execution(* com.ctbu.dao.UserDao.delete(..))"/>

        <!--配置切面:也就是增强的功能是什么-->
        <aop:aspect ref="myAspect"><!--告诉增强的方法在那个类里-->
            <!--前置通知-->
            <aop:before method="check" pointcut-ref="pointcut"/>
            <!--后置通知-->
            <aop:after-returning method="log" pointcut-ref="pointcutUpdate" returning="res"/>
            <!--环绕通知-->
            <aop:around method="around" pointcut-ref="pointcutDelete"/>
        </aop:aspect>
    </aop:config>

前置通知

如上代码所示:

<aop:before method="check" pointcut-ref="pointcut"/>就是一个前置通知,意思就是在要增强的方法前面执行

后置通知

 <aop:after-returning method="log" pointcut-ref="pointcutUpdate" returning="res"/>这个就是一个后置通知,也就是在要增强的方法执行完了之后再执行

注意点:因为是再被增强方法执行完了之后再执行,所以是可以获取到被增强方法的返回值的,不过这里的返回值有一个注意点,那就是returning="res" 这里的这个值,必须和增强方法的形参名称保持一致。 如下代码,他的形参名也叫res!必须保持一致

public void log(String res){
        System.out.println("添加日志"+res);
    }

环绕通知

 <!--环绕通知-->
            <aop:around method="around" pointcut-ref="pointcutDelete"/>这就是一个环绕通知,也就是可以再被增强方法之前执行一些操作,在被增强方法之后执行一些操作

环绕通知应该这样写

public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("添加事务");
        Object proceed = joinPoint.proceed();//执行原有的方法
        System.out.println("提交事务");
        return proceed;
    }

异常通知:

使用方法同上,但是是在程序出现异常的时候才会触发通知方法:同样可以获取到异常的信息,获取方法和后置通知相同

最终通知:

不管程序有没有异常,都会触发的通知方法

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值