zoukankan      html  css  js  c++  java
  • aop

    1.通知(Advice):在切面的某个特定的连接点上执行的动作,即当程序到达一个执行点后会执行相对应的一段代码。也称为增强处理。 通知共有如下5种类型: A 前置通知(Before advice):在某连接点(JoinPoint)之前执行的通知。xml中在<aop:aspect>里面使用<aop:before> 元素进行声明 B 后置通知(After advice) :当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)。xml中在<aop:aspect>里 面使用<aop:after>元素进行声明 C 返回通知(After return advice) :在某连接点正常执行完成后,可以取到该连接点的返回值的通知。xml中在 <aop:aspect>里面使用<after-returning>元素进行声明 D 环绕通知(Around advice):包围一个连接点的通知,可以在调用方法前后完成自定义行为。xml中在<aop:aspect>里面使 用<aop:around>元素进行声明 E 抛出异常后通知(After throwing advice):在方法抛出异常退出时执行的通知。xml中在<aop:aspect>里面使用 <aop:after-throwing>元素进行声明 通知执行顺序:前置通知→环绕通知连接点之前→连接点执行→环绕通知连接点之后→返回通知→后置通知 →(如果发生异常)异常通知→返回通知→后置通知 2.连接点(JoinPoint):程序执行的某个特定位置,例如类初始化前,类初始化后,方法执行前,方法执行后等,Spring只支持方法 的连接点,即方法执行前,方法执行后,方法抛出异常时。 3.切入点(Pointcut):切入点是一个筛选连接点的过程。因为在你的工程中可能有很多连接点,你只是想让其中几个,在调用这几个 方法之前、之后或者抛出异常时干点什么,那么就用切入点来定义这几个方法,让切点来筛选连接点,选中那几个你想要的方法。 4.切面(Aspect):切面通常是指一个类,是通知和切入点的结合。到这里会发现连接点就是为了让你好理解切点产生的。通俗来说,切 面的配置可以理解为:什么时候在什么地方做什么事。切入点说明了在哪里干(指定到方法),通知说明了什么时候干什么(什么时候通过 before,after,around等指定)。 5.引入(Introduction):允许一个切面声明一个通知对象实现指定接口,并且提供了一个接口实现类来代表这些对象。引入的定义使 用<aop:aspect>中的<aop:declare-parents>元素。(例子:通过JMX输出统计信息) 6.目标对象(Target Object):包含连接点的对象,也被称作被通知或被代理对象。 7.AOP代理(AOP Proxy):AOP框架创建的对象,代理就是目标对象的加强。在Spring AOP中有两种代理方式,JDK动态代理和 CGLIB代理。默认情况下,TargetObject实现了接口时,则采用JDK动态代理,强制使用CGLIB代理需要将 <aop:config>的 proxy-target-class属性设为true。 8.织入(Weaving):把切面应用到目标对象来创建新的代理对象的过程,织入一般发生在如下几个时机: (1)编译时:当一个类文件被编译时进行织入,这需要特殊的编译器才可以做的到,例如AspectJ的织入编译器 (2)类加载时:使用特殊的ClassLoader在目标类被加载到程序之前增强类的字节代码 (3)运行时:切面在运行的某个时刻被织入,SpringAOP就是以这种方式织入切面的,原理应该是使用了JDK的动态代理技术

  • 相关阅读:
    [Luogu P3626] [APIO2009] 会议中心
    杭电 1869 六度分离 (求每两个节点间的距离)
    杭电 1874 畅通工程续 (求某节点到某节点的最短路径)
    最短路径模板
    杭电 2544 最短路径
    POJ 1287 Networking (最小生成树模板题)
    NYOJ 1875 畅通工程再续 (无节点间距离求最小生成树)
    POJ 2485 Highways (求最小生成树中最大的边)
    杭电 1233 还是畅通工程 (最小生成树)
    杭电 1863 畅通工程 (最小生成树)
  • 原文地址:https://www.cnblogs.com/tanghao666/p/7685247.html
Copyright © 2011-2022 走看看