目录
1.什么是AOP
AOP(Aspect Oriented Programming)是面向切面编程,是一种编程范式,指导开发者如何组织程序结构。
2.AOP的作用
在不惊动原始设计的基础上为其进行功能增强。
个人认为,这个增强其实跟代理相似,就是在不改动原有代码的前提下,想给谁添加功能就给谁添加。
3.AOP的核心概念
核心概念包括五个:
连接点 切入点 通知 通知类 切面
通过分析一段代码来理解这五个概念
观察下面BookDaoImpl类和App测试类
上述程序是在原有的逻辑基础上,加了一个功能,能够测定这段代码执行一万次的时间
通过改变bookDao后的方法名,会打印出不同的结果,并且能够测定上段代码执行一万次的时间,但注意,在实现select方法时,并没有测定出执行的时间。
1.Spring的AOP是对一个类的方法在不进行任何修改的前提下实现增强。对于BookServiceImpl中有save , update , delete和select方法,我们将这些方法叫做连接点。
2.在上面描述的测试结果中,update和delete都实现了时间的测定,唯独select没有实现,那么仔细观察上面的代码,会发现,每种方法的书写都一模一样,但是最终的测试结果取不同,这就说明,我们给update和delete方法偷偷动了手脚,动手脚的过程就是对这两中方法的增强,对于我们想要增强方法我们称其为切入点。
3.观察上面的代码,通过最终测试结果,可以感觉到,整个过程其实可以将测试程序运行一万次的时间的功能提出来变成一个独立的方法,然后在执行save、delete和update方法时一同执行,我们将提取的过程实现后,独立出来的这个方法我们称其为通知。
4.通知是要增强其它的一些方法,而一些需要增强的方法就需要通知来为其增强,上面提到这种需要增强的方法我们称其为切入点,那么就需要给两者建立一种你情我愿的关系,而我们对于这段关系的描述,我们称其为切面。(通俗点说就是a想帮b,b需要被a帮,然后我们提供一个平台满足他们,这个平台我们叫做切面)
5.通知是一个方法,方法需要写在一个类中,这个类就是通知类。
图像分析: