概念
AOP(Aspect Oriented Programming),即面向切面编程,利用一种称为"横切"的技术,剖开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect",即切面。所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。
AOP开发术语
-
连接点(Joinpoint):连接点是程序类中客观存在的方法,可被Spring拦截并切入内容。
-
切入点(Pointcut):被Spring切入连接点。
-
通知、增强(Advice):可以为切入点添加额外功能,分为:前置通知、后置通知、异常通知、环绕通知等。
-
目标对象(Target):代理的目标对象
-
引介(Introduction):一种特殊的增强,可在运行期为类动态添加Field和Method。
-
织入(Weaving):把通知应用到具体的类,进而创建新的代理类的过程。
-
代理(Proxy):被AOP织入通知后,产生的结果类。
-
切面(Aspect):由切点和通知组成,将横切逻辑织入切面所指定的连接点中。
面向切面编程的作用
系统实现“高内聚、低耦合”一直是我们程序开发者的追求。AOP技术将软件系统划分成了核心关注点和横切关注点两部分,业务的核心功能则为核心关注点,与业务无关或者关系不大的则为横切关注点。
AOP技术的出现,将系统的核心关注点和横切关注点分离,避免了非核心业务耦合在核心业务中,降低了模块间的耦合度,提高了系统的可读性、可操作性和可维护性。
AOP技术将与核心业务无关或者关系不大却为不同业务模块公用或者需要的逻辑抽取成新的模块,在需要的地方再引入,大大减少的系统的重复代码。