Spring中关于AOP的实践之概念
一.什么是AOP
AOP:也称作面向切面编程
在分享几个概念执行我想先举个栗子(可能例子举得并不是特别恰当):
1.假如路人A走在大街上,被一群坏人绑架了;
2.警察叔叔接到报警迅速展开行动:收集情报,人员组织,准备装备。。。
3.警察和坏人打了一架,将人质解救出来(在这里我假设人质A受了伤)
4.警察叔叔将人质送往医院治疗
5.警察举行新闻发布会,宣布人质解救成功。
具体流程如下:
但是问题来了,如果哪一天又有人被绑架了,警察叔叔又得通过这一系列流程,有的情况下准备的时间远远大于解救人质所花的时间,那么能不能将一些通用的步骤进行托管,所以有了下面的改进:
情报收集与物质人员准备交给后勤机构,运送伤员则交给医护人员。警察叔叔就专注于与营救人质。
好了现在来解释一下关于Spring中关于AOP的几个要点:
1.切点:即程序沿纵向正常执行时的其中一个方法
2.通知:通知分为前置通知与后置通知,前置通知即在切点执行之前先行执行(个人认为多用于资源的准备),后置通知则是在切点执行完成后执行(个人认为多用于方法结束后对资源的处理)
3.切面:正常的程序执行是纵向的,如同一个管道,前置与后置通知的加入如同在管道的某一点切了一刀,程序暂时性的横向执行,即切点与通知一起组成了切面。
4织入:即将通知方法放入到切面中的一种称谓(放入的动作就称为织入)