谈谈你对spring aop的理解
谈谈你对AOP的理解
- AOP是面向切面编程,我感觉aop与动态代理是一家,因为aop的实现原理即时基于动态代理实现的。
- AOP的具体思想就是: 只专注纵向的业务逻辑处理,而不考虑这样或那样的共性内容。日志就是最好的体现方式.
- AOP解决的一大问题就是:大量的重复性代码
- 需要做一个日志的功能,即需要在每条线上都进行日志的处理,我们是不是要这么写?
这样有很多条线中都包含了一段相同的日志的处理业务代码,你怎么看?抽出来呗,作为公共的部分,被调用。
然后呢,到这里我们还没有结束,为什么这么说?
这样每个方法都和这个公共的功能类有关联关系,这里只是我们的抽出公共代码,解决了代码重复。我们需要做的是“解耦”,将业务类和这个公共的功能类之间的耦合解开,在运行的时候动态的给切入到每个运行的业务类中,那么怎么实现呢?
-
AOP实现业务和切入类的解耦。
AOP是如何实现的呢?借助动态代理。动态代理的一个最大特征就是可以延迟对象的加载,即在运行期再确定调用者和被调用者的关系。AOP也就是利用了动态的这个特征来实现的解耦。
-
AOP的主要应用
这张图也形象的展示了,软件的纵向业务发展,和软件的横向AOP切入的原理。我觉得以后,我们的开发可以更多的抽取这样的切面,让每个系统的开发只专注于核心的业务,而不考虑这样,那样的共性问题。