日期:2014-05-20 浏览次数:20772 次
AOP的相关术语以及实现方式介绍
?
先介绍下使用spring的aop的相关名词以及实现方式。
1、Aop的相关观念和术语介绍
(1)、Cross-cutting-concern
?类似日志、如安全、检查、事物等系统层面的服务,在一些应用程序之中常被见到安插至各个对象的处理流程之中,这些动作在AOP的属于中称为Cross-cutting concerns
(2)、Aspect
将散落与各个业务逻辑之中的cross-cutting concerns收集起来,设计成各个可以独立重用的对象,这些对象称为Aspect。
(3)、Advice
Aspect当中对Cross-cutting concerns的具体实现称之为Advice。我们动态代理例子的中的那个Invoke()方法,就是Advice的一个具体实例。
(4)、Joinpoint
Advice在应用程序执行时加入业务流程的点或者实际称之为JointPoint。具体来说,就是Advice在应用程序中被执行的实际。Spring只支持方法的Jointpoint,执行实际可能是某个方法被执行之前或者之后(或者两者都有),或者方法中的某个异常发生的时候。
(5)、Pointcut
定义了感兴趣的JointPoint,当调用的方法符合Pointcut表达式的时候,将Advice织入至应用程序提供服务。
(6)、Target
?一个Advice被应用的对象或者目标对象。
(7)、Introduction
对于一个现存的类,Introduction可以为器增加行为,且不用修改该类的程序,具体来说可以为某个已编写或者编译完的累,在执行时期动态的增加一些方法或者行为,而不用修改或者新增任何一行程序代码。
(8)、Proxy
?Spring的AOP主要是通过动态代理来完成的,可用于代理任何的接口,另一方面,Spring也可以使用CGLIB代理,用以代理类,像一些遗留类。
(9)、Weave
Advice被应用至对象之上的过程称之为织入(Weave),在AOP中织入的方式有几个时间点:编译时期、类加载时期,执行时期。
2、SpringAop的几种实现方式
Spring的AOP中,应该优先采用实现接口的方式,这个可以让应用程序组件彼此之间的耦合度降低。如果使用Proxy classes的方式,由于必须产生子类,所以对于被声明为final的方法无法进行代理。而且这个方式基本上是让一些无法更新源码的第三方类或者旧类来使用的。
(1)、实现Spring API的传统方式
(2)、基于xml的配置(必须使用基于Schema的XML设置,并使用spring2.0心的<aop>标签)
(3)、使用@AspectJ的Annotation支持。必须在jdk1.5以上版本才可以使用
有了这些基础知识,那么下篇我们来开始spring aop编程的实战之旅:)
?
?
?