问答详情
源自:5-4 Advice应用(上)

对切面和切入点的理解

<aop:config>
    <aop:aspect id="myAspect" ref="aBean">
    <aop:pointcut expression="execution(* com.imooc.aop.schema.advice.biz.*Biz.*(..))" id="moocPointcut" />
    <aop:before method="before" pointcut-ref="moocPointcut" /> //前置通知
    <aop:after-returning method="afterReturning" pointcut-ref="moocPointcut" /> //返回后通知
    <aop:after-throwing method="afterThrowing" pointcut-ref="moocPointcut" /> //抛出异常后通知
    <aop:after method="after" pointcut-ref="moocPointcut" /> //后通知
    </aop:aspect>
</aop:config>

aspect引用的类aBean相当于一个切面,里面提供处理切入点的方法,pointcut里的expression相当于一个生产线,里面的各个方法就相当于生产线的切入点。之后的after,after-throwing,before相当于不同切入点的工人,通过ponitcut-ref到指定切入点工作,只不过工作时间顺序不同,分别在切入点后,出问题后,切入点前,method表示程序顺着生产线到切入点时各个工人用切入面的方法处理。

提问者:孤僻成瘾 2019-03-04 13:58

个回答

  • 慕盖茨1474040
    2019-05-20 17:33:38

    写的挺好的,理解感觉也挺生动。

    定义了一个方面,每个方面会有若干点,每个点都可以设置在什么时候触发这个点开始工作,分别可以设置在这个点发生的事件之前、之后、返回前、抛出异常之前。同时也设置了各个方法,一点触发就到对应的方法中执行相应的操作。

    总体感觉大概就是这个意思。