【Spring实战4】08---面向切面AOP

---恢复内容开始---

在软件开发中,散布于应用中多处的功能成为横切关注点,常见的场景如日志,与业务逻辑分离,但是却直接嵌入业务逻辑。

 

以电力公司统计定量为例

AOP术语

通知advice

  抄表员必须在家门口的电表上记录电量向电力公司报告,那么他们必须有一份住户清单,汇报信息,记录电量,其中记录电量才是他的主要工作,那么通常把它必须要完成的工作称为通知

  通知定义了切面是什么以及何时使用,除了描述切面要完成的工作,通知还解决了何时执行的工作,如在某个方法被调用之前?之后?之前和之后?还是在异样时调用?

  类型:

    前置通知:before  在目标方法被调用之前通知

           后置 After 在方法调用之后通知

    返回 after-returning  在方法执行成功后通知

    异常 after-throwing 在方法异常后通知

    环绕 around 通知了被通知的方法,调用之前与之后的行为

连接点join point

  一个区域可能有多个住户,可能还有多个区域,各种类型的电表,但是他们的目标是所安装的电表,可以理解这里的电表为通知的连接点。

切点pointcut

   每个抄表员被分别指定到某一区域的住户,如果通知定义了切面的“什么”和“何时”,那么切点就定义了何处,切点定义了会匹配通知所有织入的一个或者多个连接点,

切面aspect

  切面就是通知和切点的结合。    抄表员要具体到那个区域抄谁家的电表

引入

  引入允许我们向现有的类增加新方法或者属性

织入

     把切面应用到目标对象并创建新的代理对象的过程

 

Spring提供了4种类型的AOP支持

  基于代理的经典Spring AOP;

  纯POJO切面

  @AspectJ注解驱动的切面

  注入式AspectJ切面

面向切面主要引用于程序中的日志、安全和事务管理模块。

---恢复内容结束---

posted @ 2016-11-07 17:39  hylinux  阅读(169)  评论(0编辑  收藏  举报