当前位置:文档之家› Spring讲解解析

Spring讲解解析


正则表达式切入点示例
பைடு நூலகம்
1.
2.
3. 4. 5. 6. 7. 8. 9.
切入点的运算

Spring在切入点上支持以下运算:

或和与。或运算表示只需有一个切入点被匹配 就执行方法。与运算表示所有的切入点都匹配 的情况下才执行。通常或运算要更有用一些。 org.springframework.aop.support.Pointcuts类 中的静态方法来编写 或者使用同一个包内的ComposablePointcut类。 不过使用AspectJ切入点表达式通常会更简单一 些。
public abstract class LogWriter { abstract void writeLog(); }


比如一个医生的职责就是看病,至于照顾 病人完全可以交给护士去做,这样条理才 能清楚。 再者,Java只提供了单继承,因此具体访问 类只能继承这个父类,如果具体访问类还 要继承其它父类,比如另外一个如JFrame 的父类,将无法方便实现。
各种通知类型




Around通知:包围一个连接点的通知,如方法调用。这是 最强大的通知。Around通知在方法调用前后完成自定义的 行为,它们负责选择继续执行连接点或通过返回它们自己 的返回值或抛出异常来短路执行。 Before通知:在一个连接点之前执行的通知,但这个通知 不能阻止连接点前的执行(除非它抛出一个异常)。 Throws通知:在方法抛出异常时执行的通知。Spring提供 强制类型的Throws通知,因此你可以书写代码捕获感兴趣 的异常(和它的子类),不需要从Throwable或Exception 强制类型转换。 After returning通知:在连接点正常完成后执行的通知。 例如,一个方法正常返回,没有抛出异常。

切入点可以使用


实用切入点实现
Spring提供几个实用的切入点实现,一些可以直接使用, 另一些需要子类化来实现应用相关的切入点。
(1)静态切入点
静态切入点只基于方法和目标类,而不考虑方法的参数。静态切入点足 够满足大多数情况的使用。Spring可以只在方法第一次被调用的时候计算静 态切入点,不需要在每次方法调用的时候计算。 正则表达式切入点。 属性驱动的切入点:一类重要的静态切入点是元数据驱动的切入点。 它使用元数据属性的值,典型地,使用源代码级元数据。


例如,某一个操作在各个模块中都有涉及,这个操作就 可以看成“横切”存在于系统当中。 在许多情况下,这些操作与业务逻辑相关性不强或者不 属于逻辑操作的必须部分,而面向对象的方法很难对这 种情况做出处理。比如记录日志,按照传统的编程习惯, 可能要这样做:
1. 2. 3. 4.

然后,所有需要做日志记录的类继承这个抽象的父类 LogWriter,然后分别实现LogWriter抽象类中的 writeLog()方法。可是这不仅破坏了代码的完整性,也 给以后的维护工作带了困难。


如果能将“不可见的”、通用的日志代码 注入主程序中,那条理可就清楚多了。AOP 可以做到。 Spring framework是很有前途的AOP技术。 作为一种非侵略性的,轻型的 AOP framework,无需使用预编译器或其它 的元标签,便可以在Java程序中使用它。
AOP 相关概念
方面(Aspect):一个关注点的模块化,这个关注点实现可能另外横切多 个对象。事务管理是J2EE应用中一个很好的横切关注点例子。 连接点(Joinpoint):程序执行过程中明确的点,如方法的调用或特定 的异常被抛出等。 通知(Advice):在特定的连接点,AOP框架执行的动作。各种类型的 通知包括“around”、“before”和“throws”通知。 切入点(Pointcut):指定一个通知将被引发的一系列连接点的集合。 引入(Introduction):添加方法或字段到被通知的类。Spring允许引入新 的接口到任何被通知的对象。 目标对象(Target Object):包含连接点的对象,也被称为被通知或被代 理对象。 AOP代理(AOP Proxy):AOP框架创建的对象,包含通知。在Spring中, AOP代理可以是JDK动态代理或CGLIB代理。 编织(Weaving):组装方面来创建一个被通知的对象。可以在编译时完 成(例如使用AspectJ编译器),也可以在运行时完成。
第十六章
Spring AOP面向方面编程
课程内容

AOP基本原理 AOP概念 Spring 框架介绍 切入点 Spring的通知类型 创建AOP代理 AOP在Spring中的应用 使用Spring AOP面向方面编程
什么是AOP



AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程。 AOP实际是GOF四人组设计模式的一种扩展,设计 模式所追求的是降低代码之间的耦合度,增加程 序的灵活性和可重用性,AOP实际上就是设计模 式所追求目标的一种实现。 所谓的分离关注就是将某一通用的需求功能从不 相关的类中分离出来;同时,能够使得很多类共 享一个行为,一旦行为发生变化,不必修改很多 类,只要修改这个行为就可以。
切入点
Spring的切入点模型能够使切入点独立于通知类型被重用。 同样的切入点有可能接受不同的通知。Spring的通知有四种类型, 如下表所示:
类型 接口 说明 在目标方法被调用之 前调用
前置通知 org.springframework.aop.Method BeforAdvice
后置通知 org.springframework.aop.AfterRet 当目标方法被调用之 后调用 urningAdvice 环绕通知 org.aopalliance.intercept.MethodI nterceptor 异常通知 org.springframework.aop.Throws Advice 栏截对目标对象方法 的调用 当目标方法抛出异常 时调用
相关主题