spring aop的三个关键概念

1.PointCut (切入点)

Join Point 指的是程序运行中的某个阶段点,如某个方法调用,异常抛出等。

Pointcut是joincut的集合,他是程序需要注入Advice的位置的集合,指明Advice要什么样的条件才能被触发。

在Pointcut接口的定义中,也许你已经想到了,ClassFilter是类过滤器,它定义了哪些类名需要拦截;典型的两个实现类为TypePatternClassFilter和TrueClassFilter(所有类均匹配);而MethodMatcher为方法匹配器,定义哪些方法需要拦截。(http://www.uml.org.cn/j2ee/201301102.asp)


1.1 静态切入点

静态切入点只限于给定的方法和目标类,而不考虑方法的参数。Spring在调用静态切入点的时候只在第一次的时候计算静态切入点的位置,然后把它缓存起来,以后就不需要再进行计算了。

1.2 动态切入点

动态切入点不仅限定于给点的方法和类,动态切入点还可以指定方法的参数,因为参数的变化性。所以动态切入点不能缓存,需要每次调用的时候都进行计算,因此使用动态切入点有很大的性能损耗。

当切入点需要在执行的时候根据参数值来调用通知时,就需要使用动态切入点。Spring提供了内建的动态切入点:控制流切入点。此切入点匹配基于当前线程的调用栈。开发人员只有在当前线程执行找到特定的方法才返回true。

1.3自定义切入点

2.Advice (通知)

Advice是某个连接点所采用的处理逻辑,也就是向连接点注入代码。

3.Advisor

advisor是pointcut和advice的配置器,它包括后两者,是将advice注入程序中pointcut位置的代码。

你可能感兴趣的:(spring aop的三个关键概念)