存在的意义
面向对象编程( OOP )有一些弊端,当需要为多个不具有继承关系的对象引人同一个公共行为时,例如日志、安全检测等,我们只有在每个对象里引用公共行为,这样程序中就产生了大量的重复代码,程序就不便于维护了,所以就有了一个对面向对象编程的补充,即面向方面编程( AOP ), AOP 所关注的方向是横向的,不同于OOP 的纵向。
专有名词
- 通知
Advice
:你想要的功能,也就是上说的安全、事物、日子等。你给先定义好,然后再想用的地方用一下 ; - 连接点
JoinPoint
:spring允许你是通知(Advice)的地方,那可就真多了,基本每个方法的钱、后(两者都有也行),或抛出异常是时都可以是连接点,spring只支持方法连接点 ; - 切入点
PoinCut
:你并不想在所有方法附件都使用通知(使用叫织入,下面再说),你只是想让其中几个,在调用这几个方法之前、之后或者抛出异常时干点什么,那么就用切入点来定义这几个方法,让切点来筛选连接点,选中那几个你想要的方法 ; - 切面
Aspect
:通知和切入点的结合 ,通知说明了干什么和什么时候干(什么时候通过方法名中的befor,after,around等就能知道),二切入点说明了在哪干(指定到底是哪个方法),这就是一个完整的切面定义 ; - 织入
Weaving
:切面应用到目标对象来创建新的代理对象的过程 。
常用的AOP
AspectJ
、JBossAOP
、SpringAOP