AOP(面向方面编程),一直对AOP中的相关概念有点模糊,不是很清楚啥是连接点,切入点,通知和方面,这里简要的概述一下。
想要简单的理解这一个概念,我们可以用一Spring的AOP代码来阐述下,代码例子如下:
@Aspect
public class MgrAspect {
@Pointcut("execution(public * com.suibibk.controller.*.*(..))")
public void web() {
}
@Around("web()")
public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
return pjp.proceed();
}
}
当然这里省略了很多代码,这里主要是定义一下概念。
1、连接点
连接点是程序执行过程中的明确定义的点,举个例子,比如某个类的某个方法的调用和执行。比如上面的代码中,链接点是值contrlooer包下面所有类中的方法,每个方法就是一个连接点。
2、切入点
切入点是用来指明所需连接点的程序构造,可以用它来指明一系列的连接点,比如上面代码中的:
@Pointcut("execution(public * com.suibibk.controller.*.*(..))")
public void web() {
}
在Spring的AOP中,当然在不同AOP比如AspectJ中可能定义不一样,
@pointcut 关键字表明气候是一个命名的切入点声明,
web() 是切入点的名字
execution(public * com.suibibk.controller.*.*(..)) 捕获所需要的连接点。
3、通知
通知指定当到达特定切入点处应该执行的diamante,SpringAOP提供了前置,后置,环绕通知,上面的 doAround
是环绕通知。
4、方面
方面是一个AOP的模块戴远,比如这里MgrAspect.java这个类就是一个方面。把切入点和通知都包含在一起。
好了,这里只是单纯的介绍一下,就不深入研究了,理解这些概念就好了。