spring AOP重要概念的定义

关注点(concern):一个关注点可以是一个特定的问题概念,或是应用程序的兴趣区间,总而言之,应用程序必须达到的一个目目标。 eg:安全性检查,事务管理,性能监控。在一个oo的应用中,关注点可能已经被代码模块化,也可能散落在整个对象模型之中

横切关注点(crosscutting concern):如果一个关注点的实现代码散落在很多个类或方法之中,eg:安全性检查,我们称之为横切关注点

方面(aspect):一个方面是对一个横切关注点的模块化,它把原本散落在各处的用于实现这个关注点的代码归整到一处

连接点(join point):程序执行过程中的一点
     1.方法调用(method invocation):对方法可能包括构造函数的调用,不过并非所
  有的aop框架都支持对象构造时的增强(advice)
     2.字段访问(field access):读或写的实例变量,同样,并非所有aop框架都支持字
  段访问的增强,那些支持这类增强的aop框架都可以区分读操作或写操作
     3.异常抛出(throws):特定的异常被抛出

增强(advice):在特定连接点执行的动作,很多aop框架都以拦截器(interceptor)的形式来表现增强————所谓拦截器是这样的一个对象,当连接点被调用时,它会收到一个回调消息。增强的例子包括:a。在执行特定连接点之前,检查安全性凭证   b.在执行某个方法之前开启事务,在连接点执行完毕后提交回滚事务

切入点(pointcut):一组连接点的总称,用于指定某个增强,应该何时被调用,,切入点通常用正则表达式或别的通配符语言来描述,有些aop实现支持切入点的组合

引介(introduction):为一个现有的java类或接口添加方法或字段,这种技术可以用于实现java中的多继承,或者给现有的对象模型附加新的api;eg:可通过引介让一个现有的对象实现w3c规定的xmlnode接口(参见混入继承)

混入继承(mixin inheritance):一个“混入类”封装了一组功能,这组功能可以被混入到现有的类当中,并且无需求助于传统的继承手段。在aop这里,混入是通过引介来实现的,在java中可通过混入来模拟多继承

织入(wearing):将方面整合到完整的执行流程中(完整的类,此时被织入的便是引介)
   
      当执行流程进展到连接点时,增强会首先接管流程控制权,当增强允许执行流程继续前进,执行真正的方法调用或字段访问时,我们就说这样操作(procceed)了


不同类型的增强:
前增强(before ,pre):在连接点调用之前,首先调用增强
后增强(after,post):在连接点调用之后,再调用增强,在aspectJ中,后增强又分为三种:
     1.在调用成功完成之后,aspectj和spring都将这种增强称为“返回后增强”(after returning advice).
    2.在抛出某种特定类型或子类型的异常 后,aspectj称之为“抛出后异常”(after throwing advice),spring称为“抛出异常”(throws advice)
     3.在特定点的任何调用之后,不管嗲用是否抛出异常,aspectj称为“后增强”(after advice)
环境增强(around):这类增强可以完全控制执行流程,除了完成本身的工作之外,它还需要负责主动调用连接点,促使真是的操作发生(procced)--这通常是通过调用某个特定的方式来完成的





  



你可能感兴趣的:(spring,AOP,框架,正则表达式,OO)