图解Spring AOP原理机制

Posted 悦码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图解Spring AOP原理机制相关的知识,希望对你有一定的参考价值。

面试中 AOP 是一个离不开的话题。精通 AOP ,在实际的编程中更能让我们得心应手!本文将结合自己的经验,使用图文并茂的语言给大家讲明什么是 Spring AOP?

           什么是 AOP?

AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。这种散布在各处的无关的代码被称为横切(cross-cutting)代码,在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。

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

             AOP 的使用场景

AOP 框架种类如下:

  • AspectJ

  • JBoss AOP

  • Spring AOP

使用 AOP 可以做的事情有很多。

  • 性能监控,在方法调用前后记录调用时间,方法执行太长或超时报警。

  • 缓存代理,缓存某方法的返回值,下次执行该方法时,直接从缓存里获取。

  • 软件破解,使用AOP修改软件的验证类的判断逻辑。

  • 记录日志,在方法执行前后记录系统日志。

  • 工作流系统,工作流系统需要将业务代码和流程引擎代码混合在一起执行,那么我们可以使用AOP将其分离,并动态挂接业务。

  • 权限验证,方法执行前验证是否有权限执行当前方法,没有则抛出没有权限执行异常,由业务代码捕捉。

看下面传统编码方式与使用aop的区别 。

图解Spring AOP原理、机制

          AOP核心概念

描述AOP常用的一些术语有通知(Adivce)、切点(Pointcut)、连接点(Join point)、切面(Aspect)、引入(Introduction)、织入(Weaving)、通知(Advice)等。



以上是关于图解Spring AOP原理机制的主要内容,如果未能解决你的问题,请参考以下文章

Spring图解核心,AOP切面编程,异步操作详解

图解spring3-IoC与AOP

spring-AOP原理

深入浅出Spring原理及实战「原理分析专题」不看源码就带你剖析AOP容器核心流程以及运作原理

“上帝视角”图解Spring事务的传播机制原理

「Spring 」「AOP 容器」不看源码就带你认识核心流程以及运作原理