spring03_01_AOP介绍【理解】

[理解]AOP概述

什么是AOP

AOP:Aspect Oriented Programming(面向切面编程/面向方面编程)

AOP是OOP的一个延伸

  1. OOP(面向对象编程)
    1. 三大特征:封装、继承和多态
    2. 比如说,有DOG类、Cat类、Horse类,它们都有eat方法,run方法,eat打印了我能吃,run打印了我能跑,按照OOP的编程思想,那么我们可以抽象出父类Animal,在父类中放置相同的属性或者方法,这样来避免多子类中重复的代码

OOP是纵向抽取和继承体系,OOP很多场合都能够解决我们的问题,但是有一些场合它也处理不了解决不了代码重复的问题

横切逻辑存在是存在问题

  1. 横切逻辑往往在很多方法中,它是重复的
  2. 横切逻辑和业务代码混杂在一起,让业务代码变得很臃肿,业务代码应该只处理业务逻辑

OOP已经不能处理横切逻辑的问题了,AOP横空出世,AOP独辟蹊径的提出了横向抽取机制,将业务逻辑和横切逻辑分离,但分离不是难事,难的是分离之后怎么把横切逻辑再融合到原有业务逻辑上,达到和原来一样的效果

所以,我们要做的这个比较难的事就是在不修改(不侵犯)原有业务逻辑的基础上做逻辑增强(横切逻辑增强)。

 

为什么叫AOP(面向切面编程)

因为我们AOP要解决的问题就是在不改变业务逻辑基础上增强横切逻辑。在这个过程中,业务逻辑我们是不能改变的,所以我们不能面向业务逻辑,只能面向横切逻辑;另外还有一层意思,AOP要做增强的横切逻辑往往不是影响一个方法,往往会影响很多方法(对多处的业务逻辑进行增强),影响了一大片,有一个“面”的概念在里面,所以叫做面向切面编程。

AOP的实现方式

Spring的AOP的实现方式就是动态代理技术

AOP的作用及优势

  1. 作用:程序运行期间,在不改变原有业务逻辑的情况下进行方法增强
  2. 优势:减少重复代码,提高开发效率,业务逻辑和增强的横切逻辑分离便于维护

猜你喜欢

转载自blog.csdn.net/qq_35670694/article/details/89001380