aop说明
aop 提供另外一种程序结构,是oop的一种补充。oop的核心单元是类,而 aop 的核心是切面。切面使得我们关注的模块,比如事务管理,能够径直穿过很多种类和对象。我们关心的这些问题通常被称作需要横切的问题。
aop 是spring 的一个关键组件,但是ioc 并不依赖aop ,所以,如果你不想用aop,就可以不用。aop是对sping 的 ioc进行了补充,从而使spring 成为了一个非常强大的中间解决方案。
aop在 spring 框架中这样使用:
1 提供声明性的企业级服务,特别的,它可以替代 ejb 的企业级服务。最重要的服务,比如事务管理。
2 允许用户自定义切面,从而对oop进行补充。
aop 概念
首先我们介绍几个aop的核心概念和技术用语。这些技术用语不是spring特有的。
切面(aspect):一个涉及很多类的。。。。在企业java应用中,事务管理就是一个比较好的横切例子。在spring 的aop里面,切面被实现为一个普通的类,这个类会在xml里面进行配置,或者被实现为一个被@Aspect注解的普通类。
连接点(join point):程序里面执行的一个点。比如一个方法的执行,或者去处理一个异常。在spirng aop里面,往往是指一个方法的执行。
建议(Advice):切面针对某个连接点发生的动作。不同的建议包括 around,before ,after. 很多aop 的框架,包括spirng,把一个建议组织成一个拦截器,并且在连接点周围维护了一系列的拦截器。
切入点(Pointcut):对连接的描述。建议和切入点是关联在一起的,所有和这个切入点匹配的连接点执行时(比较,某个有名字的方法的运行),建议也会运行。连接点和切入点表达式匹配的概念是aop的核心,spring 默认使用 AspectJ 切入点表达式。
介绍:声明额外的方法或者字段。Spring AOP 允许你介绍新的接口给被建议的对象。比如:你可以使用介绍来创建一个实现IsModified 接口的对象,来简化缓冲。(在Aspectj 社区,一个介绍也被认为是一个内部类型声明)
目标对象:一个被切面建议的对象。也被叫做 被建议的对象。因为Spring AOP 是使用运行时代理的,所以这个对象总是一个被代理的对象。
AOP代理:AOP 框架创建的一个对象,用来实现切面的内容。在sping 框架中,一个AOP代理是一个JDK动态代理,或者是一个
CGLIB代理。
织入:把切面和其他应用程序类型或者对象连接起来,从而创建一个被建议的对象的过程。这个过程看样子在编译的时候(使用AspectJ 编译器),加载,或者运行的时候。Spring Aop,和其他的纯java AOP 框架一样,在运行的时候进行织入。