您的位置:首页 > 运维架构

菜鸟的成长之路——AOP术语解释

2018-02-05 15:01 162 查看
  spring有两大核心,IOC和AOP。

  总算可以喘口气,前面几节课我们把IOC的知识探讨完成。现在我们可以来聊一聊spring的另外一大核心——AOP。

1、AOP是一种什么技术?

  AOP是spring框架的核心之一,一开始被人们称为“面向方面编程”,但是这个叫法不是非常的形象,后来又有很多人称之为“面向切面编程”。

  按照重构的思想,如果程序中有大量相同的代码,则应该将代码提取出来形成抽象类或者方法,于是有了面向对象OOP思想。例如讲师和学生都具有吃喝玩乐的方法,于是讲师和学生被抽象出人的类。

  上面我们说的都是面向对象来说的,比如讲师是对象,学生是对象,人类也是对象。就在这时候,学校下达了一个命令,所有讲师上课和下课之前必须点下名。

  有的同学说了,这有什么困难的,在讲师类的上课方法前面和后面加入点名的代码不就好了吗。于是,就出现了问题,spring框架嫉妒追求的就是非侵入式,如果我们的代码写在讲师类里面,岂不是又违反了这个原则?

  于是,spring有了AOP的思想,在讲师上课的前后加入操作。下面我们来了解一下AOP里面有哪些概念吧!

2、AOP里都有哪些概念?

  目标对象:学校制定了一条制度,上课前后必须进行点名。这个制度是对于讲师而言的,那么讲师就是目标对象。

  切点:学校制定的制度规定目标对象在上课前后进行点名,没有约定在吃饭、睡觉等方法前后进行点名,那么上课这个方法就是切点。

  连接点:学校制定的制度要目标对象在切点的前面和后面两个时间进行点名,那么切点的前面或者后面等时间点叫做连接点。

  增强:学校要求目标对象在连接点进行点名的操作,点名的操作就是我们需要添加的程序代码,点名就叫做增强。

  引介:引介是一种特殊的增强,让目标对象添加了新的属性或者方法,也就是成为了某个接口的实现类。

  织入:将增强或者引介加入到连接点上,这个过程叫做增强。

  切面:织入了增强或者引介的切点,整体叫做切面。

  代理:在程序中,我们说过不会去改变原来的代码,会使用另外一个类去时刻“监听”着切点是否被调用,一旦调用马上在相应连接点织入增强。这个“监听”的类叫做代理

3、AOP是如何做到使用代理“监听”某个目标对象的?

  springAOP是使用动态代理技术在运行期织入增强的代码的。springAOP使用了两种代理机制:JDK的动态代理和CGLib的动态代理,这两种动态代理方式我们会在下节课讲到。

4、AOP和OOP是否有冲突?

  两者虽然在字面上非常相像,但是两者确实面向完全不同的领域的思想。OOP面向的是实体,他注重将属性和方法封装在一起,让程序更符合人类的习惯。而AOP是将实体横切,面向切面进行相同代码的封装,注重代码的重用性。

  两者是一个互相补充和完善的关系,不会存在矛盾和冲突。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: