菜鸟的成长之路——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是将实体横切,面向切面进行相同代码的封装,注重代码的重用性。
两者是一个互相补充和完善的关系,不会存在矛盾和冲突。
总算可以喘口气,前面几节课我们把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是将实体横切,面向切面进行相同代码的封装,注重代码的重用性。
两者是一个互相补充和完善的关系,不会存在矛盾和冲突。
相关文章推荐
- 菜鸟的成长之路——基于Schema的aop
- 菜鸟的成长之路——基于Aspectj的AOP
- 菜鸟的成长之路——ftp的上传和下载
- Java菜鸟成长之路__Day_4_Java_内部类
- 一个菜鸟java码农的成长之路(4):用LinkedList模拟栈结构
- AOP术语解释
- 手机游戏刷表流程记录—服务端菜鸟的成长之路
- Java菜鸟成长之路__Day_4_Java_返回值为类怎么办?
- 菜鸟的成长之路--从安装TensorFlow开始
- 转-Spring AOP 术语解释(最容易理解)
- 菜鸟成长之路
- 菜鸟的成长之路——映射文件
- 菜鸟如何成为一个高效程序员的成长之路
- 菜鸟的成长之路——mybatis的注解
- 菜鸟的成长之路——在清华特奖经验分享交流会上的演讲
- 菜鸟如何成为一个高效程序员的成长之路
- 一个Android应用开发菜鸟的成长之路——工作第一天:解决了java.lang.NoClassDefFoundError问题
- 菜鸟的成长之路——增强篇
- 菜鸟的成长之路——springmvc的注解
- Java菜鸟成长之路__Day_2_Java_方法