您的位置:首页 > 编程语言 > Java开发

SpringAop的相关概念

2014-06-30 09:33 253 查看
(1)、关注点(Concern)

①核心关注点(Core Concerns)

一个系统中的核心功能,也就是一个系统中跟特定业务需求联系最紧密的商业逻辑。例如电子商务系统中的订单处理,客户管理、库存等都属于系统中的核心关注点。

②横切/交叉关注点(Crosscutting Concerns)

分布在不同的模块中解决相同的问题,这种跨多个模块的关注点我们称之为横切/交叉关注点。例如电子商务系统中的用户验证、事务处理、日志管理等都属于横切/交叉关注点。

(2)、切面(aspect)

   AOP中的aspect是一个抽象概念,它除了包括属性、方法之外,还包括切入点(Pointcut)和通知(Advice)。另外切面还可以给一个现成的类添加属性、构造函数,指定某一个类实现一个接口或者继承某个类等。

(3)、连接点(JoinPoint)

概念,这个点可以是方法、属性、构造函数、静态初始化块,甚至一条语句。

在AOP框架中一般用签名的方式来描述一个连接点。

(4)、切入点(Pointcut)

切入点是一个或多个连接点,可以看作是连接点的集合。切入点的描述比较具体,而且一般会和连接点的上下文环境结合。

例如:“execution(* com.newland.aop.Component.business*(..))”表示一个切入点,Component类中的所有以business开头的方法都可以看作是一个连接点,比如方法business1、business2、business3表示三个不同的连接点。

(5)、通知(Advice)

     通知(Advice)中定义了切面模块中的实际逻辑(或实现),比如写入日志的实际代码、事务处理的实际代码等。换句话说通知就是在切面模块中指定的切入点所要执行的程序代码。

通知一般分为三种情况:

①前置通知(Before Advice)——是指在连接点之前,先执行通知(Advice)中的代码。

②后置通知(After Advice)——是指在连接点执行之后,再执行通知(Advice)中的代码。

③环绕通知(Around Advice)——可以自由改变程序的流程,连接点的返回值等。在环绕通知中除了可以自由添加需要的切面功能之外,还需要负责主动调用连接点(通过调用proceed方法)来执行激活连接点的程序。

(6)、引介(Introduction)

引介是指给现有的类添加方法或字段属性。还可以在不改变现有类的代码的情况下,让现有的类实现新的接口,或者为其指定一个父类以实现多重继承。

(7)、织入(Weaving)

把解决横切问题的切面模板和系统中的核心模块按照某种策略或规则组合到一起的过程。  

三种不同的织入方式:

①运行时织入——在Java执行的过程中,通过Java提供的代理来实现织入;

②类加载器织入——通过自定义的类加载器,在JVM加载字节码的时候进行织入;

③编译器织入——试用专门的编译器来编译包括切面模块在内的整个应用程序,在编译的过程实现织入。

(8)拦截器(Interceptor)

拦截器是用来实现对连接点进行拦截,从而在连接点前或后加入自定义的切面模块功能。

(9)目标对象(target)

是指在基于拦截器机制实现的AOP框架中,位于拦截器链最末端的对象实例,通常指的是实际业务对象。

(10)AOP代理(Proxy)

是指在基于拦截器机制实现的AOP框架中,实际业务对象的代理对象。这个代理对象一般被切面模块引用,AOP中的切面逻辑就是插入到代理对象中执行的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: