Spring AOP初步了解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wueryan/article/details/51637089

作者:谢新亭
链接:https://www.zhihu.com/question/24863332/answer/105412266
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

此答案有毒,请谨慎服用。如果需要深入而且准确理解Spring的工作原理以及设计思想,请阅读以下官方文档。本稿仅供学习!

参考文档:http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/aop.html

(1)什么是AOP?如何理解面向切面编程?
(2)面向切面编程的好处?
(3)spring aop的实现原理?

什么是AOP?如何理解面向切面编程?
我们常常说面向XX编程开发,其实简单说来,无非就是一种编程模型或者编程思路的转换。在过去的编程开发中,我们习惯了将业务从头到尾按照它发生的顺序进行编程开发,这就是我们常常说起的面向过程开发。在这个过程中,我们需要分析出解决问题的步骤,然后利用函数把这些步骤一步一步实现开来。然而这种编程模型在初期软件实现步骤不多的情况下,不会出现太大的问题。但是随着时间的推移,软件越来越庞大,其中的业务逻辑也越来越复杂,这种编程模式就很容易失控。

于是我们又切换了另一种编程模型:面向对象编程。我们将过程式编程的方法给抽离开来,然后给他们划分成一个一个的编程对象,这个对象里有自己的行为,有自己独立的域。这种划分的好处让过去复杂庞大的业务逻辑被细化,从而变得简单易懂。

因此,从面向过程编程到面向对象编程,其实还是一种编程模型的转换而已。

说回面向切面编程。面向切换编程其实也是一种不同于过程与对象的编程模型。这种编程模型比面向对象又抽离了一层出来。在实际的开发过程中,开发者总会遇到各种各样的通用逻辑,这种通用逻辑,比如日志记录、事务管理、连接的开启与关闭等,这些逻辑与具体的业务逻辑耦合在一起,那么我们是否可以利用某种模型将这种通用逻辑给剥离出来呢?

因此我们定义了切面这种逻辑。我们在具体的业务逻辑的前面与后面定义好了一套切面,然后将这些通用逻辑都剥离出来后分布在这套切面上。这时候开发者就不用去关心这些通用逻辑了,而更加专注于他们的具体业务逻辑。

面向切面编程的好处
面向切面编程让开发者在制定好切面策略、切面触发时机等后,就可以对这些通用的逻辑置之不理,从而更加专注具体的复杂的业务逻辑当中。
另一方面,制定好的切面策略更换简单,不用像从前一样,一旦觉得切面逻辑不合适,就要大范围地修改代码,这种模型更加容易扩展,也方便维护。

spring aop的实现原理?
N/A

猜你喜欢

转载自blog.csdn.net/wueryan/article/details/51637089
今日推荐