• Spring AOP


    一、AOP:面向切面编程

    二、AOP中的术语

    1.切面:使用@Aspect修饰的类,

    2.连接点:程序执行过程中明确的点,插入切面的地点,如对方法的调用,方法返回,抛出异常等。

    3.通知:连接点所要触发的增强处理,切面的实际实现,通知在连接点插入到应用系统中。

      A.前置通知:在连接点之前执行的通知,不能阻止的目标方法执行。

      B.后置通知:目标方法结束时织入,不过成功完成或异常中止,都会被织入。

      C.返回后通知:在目标方法成功完成后织入。

      D.环绕通知:环绕目标方法,类似Web中Servlet规范中的Filter的doFilter方法,可以决定目标方法在什么时候执行,如何执行,阻止目标方法的执行。

      E 抛出异常后通知:在目标方法抛出异常退出时执行的通知。

    通知执行顺序:

    前置通知→环绕通知连接点之前→连接点执行→环绕通知连接点之后→返回通知→后置通知

                                                                      →(如果发生异常)异常通知→后置通知

    4.切入点: 定义了通知应该应用在哪些连接点,如Before(“execution(* org.php.service.impl.*.*(..))”)

    5. 目标对象:被通知的对象。既可以是你编写的类也可以是第三方类。

    6. AOP代理:将通知应用到目标对象后创建的对象,应用系统的其他部分不用为了支持代理对象而改变。Spring中的AOP代理可以是JDK动态代理,也可以是CGLIB代理,前者为实现接口的目标对象的代理,后者为不实现接口的目标对象的代理。

    7. 织入:将通知添加到目标对象从而创建一个新代理对象的过程。

      织入的实现方式:

          编译期:切面在目标对象编译时织入.这需要一个特殊的编译器(例如AspectJ)

          类装载期:切面在目标对象被载入JVM时织入.这需要一个特殊的类载入器.

          运行期:切面在应用系统运行时织入.(例如CGLIB)

    三.Spring AOP的几种实现方式

    1. 基于代理的AOP

      1)前置增强:BeforeAdvice,表示在目标方法执行前实施增强。

      2)后置增强:AfterReturningAdvice,表示在目标方法执行后实施增强。

      3)环绕增强:MethodInterceptor,表示在目标方法执行前后实施增强

      4)异常增强:ThrowsAdvice,表示在目标方法抛出异常后实施增强

      5)引入增强:Introduction, org.springframework.aop.IntroductionInterceptor

    2. @Aspect注解形式的

    3.@<aop:config>基于配置的

    延伸阅读:http://my.oschina.net/huangyong/blog/161338

  • 相关阅读:
    CSS的四种基本选择器和四种高级选择器
    Leetcode 897 递增顺序查找树
    Leetcode 872 叶子相似的树
    Leetcode 700 二叉搜索树中的搜索
    Leetcode 二叉树中第二小的节点
    Leetcode 669 修剪二叉搜索树
    Leetcode 653 两数之和IV
    Leetcode 637二叉树的层平均值
    Leetcode 617 合并二叉树
    Leetcode 606 根据二叉树创建字符串
  • 原文地址:https://www.cnblogs.com/dapeng520/p/4659479.html
Copyright © 2020-2023  润新知