zoukankan      html  css  js  c++  java
  • 转:Spring AOP术语

    1、连接点(Joinpoint)
     
        程序执行的某个特定位置:如类开始初始化前、类初始化后、类某个方法调用前、调用后、方法抛出异常后。这些代码中的特定点,称为“连接点”。Spring仅支持方法的连接点,即仅能在方法调用前、方法调用后、方法抛出异常时以及方法调用前后这些程序执行点织入增强。
     
     
     
    2、切点(Pointcut)
     
        每个程序类都拥有多个连接点,如一个拥有两个方法的类,这两个方法都是连接点。但在这为数众多的连接点中,如何定位到某个感兴趣的连接点上呢?AOP通过“切点”定位特定的连接点。通过数据库查询的概念来理解切点和连接点的关系:连接点相当于数据库中的记录,而切点相当于查询条件。一个切点可以匹配多个连接点。
     
        Spring中,切点通过Pointcut接口进行描述。
     
     
     
    3、增强(Advice)
     
        增强是织入到目标类连接点上的一段程序代码。增强既包含了用于添加到目标连接点上的一段执行逻辑,又包含了用于定位连接点的方为信息,所以Spring所提供的增强接口都是带方位名的:BeforeAdvice(方法调用前的位置)、AfterReturningAdvice(访问返回后的位置)、ThrowsAdvice等。
     
     
     
    4、目标对象(Target)
     
        增强逻辑的织入目标类。
     
     
     
    5、织入(Weaving)
     
        织入是将增强添加到目标类具体连接点上的过程。AOP有三种织入方式:
     
    1)编译期织入,这要求使用特殊的Java编译器;
     
    2)类装载期织入,这要求使用特殊的类装载器;
     
    3)动态代理织入,在运行期为目标类添加增强生成子类的方式。
     
    Spring采用动态代理织入,而AspectJ采用编译期织入和类装载期织入。
     
     
     
    6、切面(Aspect)
     
    切面由切点和增强组成,它既包括了横切逻辑的定义,也包括了连接点的定义,Spring AOP就是负责实施切面的框架,它将切面所定义的横切逻辑织入到切面所指定的连接点中。
     
     
     
    AOP的工作重心,主要包括两个:
     
    1)如何通过切点和增强定位到连接点上;
     
    2)如何在增强中编写切面的代码。
     
     
     
    7、其他基础知识
     
        Spring AOP使用了两种代理机制:一种是基于JDK的动态代理,另一种是基于CGLib的动态代理。之所以需要两种代理机制,很大程度上是因为JDK本身只提供接口的代理,而不支持类的代理。
     
        JDK的动态代理主要涉及到java.lang.reflect包中的两个类:Proxy和InvocationHandler。
     
        CGLib采用非常底层的字节码技术,可以为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用。
     
        有研究表明,CGLib所创建的动态代理对象的性能比JDK的所创建的代理对象的性能高了不少。但CGLib在创建代理对象时所花费的时间却比JDK动态代理多,所以对于singleton的代理对象或者具有实例池的代理,因为无须频繁创建代理对象,所以比较适合用CGLib动态代理技术,反之则适合用JDK动态代理技术。  CGLib不能对目标类中的final方法进行代理。
     
    转自:http://blog.sina.com.cn/s/blog_6f6a259c0101azor.html
  • 相关阅读:
    (七)策略模式详解
    (六)观察者模式详解(包含观察者模式JDK的漏洞以及事件驱动模型)
    递归锁,死锁,使用递归锁解决死锁,信号量
    并发编程中的GIL锁(全局解释器锁)自己理解的他为啥存在
    线程了解以及创建线程的Threading模块中的部分方法
    进程 >> 互斥锁、队列与管道、生产者消费者模型
    进程比较基础的内容
    基于UDP协议的socket套接字编程 基于socketserver实现并发的socket编程
    网络基础 + 简易服务端和客户端
    单例模式
  • 原文地址:https://www.cnblogs.com/dreamroute/p/4493432.html
Copyright © 2011-2022 走看看