阅读961 返回首页    go 魔兽


AOP

  写一个软件系统,有业务需求和系统需求,日志记录,安全检查,事务管理等是系统需求。用AOP的话来说,这些系统需求就是系统中的横切关注点(cross-cutting concern),所以AOP引入了Aspect概念,用来模块化形式对系统中的横切关注点进行封装。Aspect对于AOP,相当于Class对于OOP。
 AOP毕竟是一种理念,实现这种理念毕竟需要一种现实的方式:AspectJ,AspectC,Aspect.NET等就是其实现的方式。以AspectJ为例子,将AO组件集成到OOP组件的过程称为织入(weave)。

Joinpoint:怎么理解?AO组件现在要织入到OOP组件中,需要知道在系统的哪些执行点上进行织入操作,这些执行点就是Joinpoint。
Joinpoint的类型:就是执行点上进行横切关注点的织入,或者程序执行过程中任何时点都可以做为横切逻辑的织入点,那么这些织入点的类型7种:
1:方法调用(Method Call);
2:方法执行(Method Call Execution)
3:构造方法调用(Constructor)
4:字段设置(Field Set)
5:字段获取(Field Get)
6:异常处理执行(Exception Handler Execution)
7:类初始化(Class initialization)。

Pointcut是什么?其代表的是Joinpoint的表述方式。Pointcut规定了Joinpoint的信息。意思就是程序中Joinpoint那么多,横切逻辑过来不能一通的乱织入啊。所以横切逻辑通过Pointcut给出指定多少个Joinpoint来开始干活。
Pointcut的表述方式?1:直接指定Joinpoint所在的方法名称,2:正则表达式(使用正则表达式的强大功能,来归纳表述需要符合某种条件的多组Joinpoint)3:使用特定的Pointcut表述语言。

Advice:是单一横切关注点逻辑的载体,就是代表将要织入到Joinpoint的横切逻辑。相当于Class中的Method.
Advice的形式:按照在Joinpoint位置执行时机的差异或则完成功能不同,分多种具体的形式:BeforeAdvice,AfterAdvice,等.....。

Aspect:是对系统中的横切关注点逻辑进行模块化封装的AOP概念实体,包含多个Pointcut以及相关的Advice.

Target Object:符合Pointcut所指定的条件,将在织入过程中被织入横切逻辑的对象,就是Target Object。

Weaving:AOP和OOP的的桥梁,完成织入过程就是Weaver(织入器).ProxyFactory是SpringAOP的通用织入器。

最后更新:2017-06-07 21:32:22

  上一篇:go  阿里数据库内核月报:2016年01月
  下一篇:go  阿里数据库内核月报:2015年12月