Spring AOP学习之路(一)

AOP

AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。不过OOP允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能。日志代码往往横向地散布在所有对象层次中,而与它对应的对象的核心功能毫无关系对于其他类型的代码,如安全性、异常处理和透明的持续性也都是如此,这种散布在各处的无关的代码被称为横切(cross cutting),在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。

AOP技术恰恰相反,它利用一种称为"横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect",即切面。所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。

AOP 术语

Aspect(切面) 一个模块具有一组提供横切需求的 APIs。例如,一个日志模块为了记录日志将被 AOP 方面调用。应用程序可以拥有任意数量的方面,这取决于需求。
Joinpoint(连接点) 在你的应用程序中它代表一个点,你可以在插件 AOP 方面。你也能说,它是在实际的应用程序中,其中一个操作将使用 Spring AOP 框架。
Advice(通知) 这是实际行动之前或之后执行的方法。这是在程序执行期间通过 Spring AOP 框架实际被调用的代码。
Pointcut(切入点) 这是一组一个或多个连接点,通知应该被执行。你可以使用表达式或模式指定切入点正如我们将在 AOP 的例子中看到的。
Introduction(引入) 引用允许你添加新方法或属性到现有的类中。
Target object(目标) 被一个或者多个方面所通知的对象,这个对象永远是一个被代理对象。也称为被通知对象。
proxy(代理)
Weaving(织入) Weaving 把方面连接到其它的应用程序类型或者对象上,并创建一个被通知的对象。这些可以在编译时,类加载时和运行时完成。

通知的类型

  1. 前置通知 在一个方法执行之前,执行通知。
  2. 后置通知 在一个方法执行之后,不考虑其结果,执行通知。
  3. 返回后通知 在一个方法执行之后,只有在方法成功完成时,才能执行通知。
  4. 抛出异常后通知 在一个方法执行之后,只有在方法退出抛出异常时,才能执行通知。
  5. 环绕通知 在建议方法调用之前和之后,执行通知。

AOP原理

AOP详细全面的知乎讲解:https://zhuanlan.zhihu.com/p/25522841

猜你喜欢

转载自blog.csdn.net/weixin_44000004/article/details/88041886