00:01
各位同学大家好,刚才呢,咱们通过一个计算器的场景给大家演示了代理模式,分别是静态代理和动态代理,各位重点要找一下动态代理,因为AOP的底层用到就是动态代理,那下面呢,我们正式来学习这个a op,首先先看一下a op的概念和它相关的术语,然后咱再进行注解方式a op和叉L方式的a op的具体操作。咱们现在来看它的基本的概念,首先我们看第一段话,A op呢?它翻译过来叫什么?叫做面向切面边程,它是一种设计思想,这种思想是什么样的呢?大家看这段话啊,这段话各位要重点记一下,它是以运编译的方式和运行器的动态代理方式实现,实现什么在不改变源代码的情况下,给程序动态统一添加额外功能的一种技术,比如我们加一个日志,加个权限,加个等等其他的额外功能,这个叫a op a a op可以怎么样?它可以对我们的各个部分进行隔离,让你模块之间的耦合度进一步降低,最终提高程序的可重性,提高开发效率,这个叫A。
01:23
我再重复一遍啊,它是通过预编译方式和动态代理方式,在不改变源代码的情况下,给程序动态统一添加额外功能的一种技术,这就叫面向切面编程A,所以这是一个概念上的一个介绍。然后概念之后,下面我们继续来看,给大家介绍一下A中相关的术语。大家看我课件里边啊,我这位置呢,一共列了有七个术语,那咱们一个一个来看一下,首先看第一个术语叫横切关注点,那这个什么意思呢?给大家说明,比如我现在啊,在这里边有很多方法,或者说有各个模块,那比如现在我各个模块中呢,都想解决同样一个问题,比如说我这些模块中,或者这些方法中都想加日志,或者说都想加事物,或者都想加用户验证,那这个时候这里边的用户验证、日志、事物就属于叫横切关注点,就是我们从方法中抽取同样一类非核心业务啊,那这个业务就叫横切关注点。
02:36
然后大家再来看,比如现在我有十个附加功能,那就有十个横切关注点,这就是第一个术语,横切关注点,然后再看第二个啊,叫通知或者叫增强,什么叫增强呢?通俗来说就是咱们想要增强的功能,比如说我想加一个。用户的安全校验,想加个事物,想加上一个日志等等,这个就是叫通知或者叫增强。
03:04
然后之后我们再来看啊,因为每个横切关注点要做的事情都需要写个方法来实现,比如你做这个日志或者做什么都需要写个方法,那这个方法就叫通知方法,这是第二个意思,然后再来看啊,通知呢拥有五种类型,咱们一个来说一下啊,第一个叫前置,在你目标方法之前执行。第二个叫返回,在目标方法之后执行,还有一个叫异常,当目标方法出现异常的时候会执行,还有一个叫后置,后置什么意思呢?在你方法。最终结束之后执行也就这么来理解,后置在返回通知之后进行执行,另外还有一个叫环绕,环绕什么意思呢?做个说明,环绕指的是啊,前后都执行,如果说你写一个TRY,开family这个结构,那里边呢,这些通知在里边应该都会有体现,这咱一会儿会进行演示,这就叫通知,或者说增强前置,返回异常后置,还有环绕,这是它的五种通知类型。
04:15
第二个术语,然后看第三个术语叫切面,什么叫切面呢?就是我们啊封装通知方法的类,比如现在我写个类,里边有前置后置,什么返回等等,那这个类就叫做切面,这是第三个,然后第四个就是咱们那个目标对象啊,第五个就是代理对象,第六个大家看一下啊,叫连接点。什么叫连接点?我们看这张图里边啊,给大家说明连接点怎么去理解,比如说我现在啊,把方法排成一排,就是什么添加,包括怎么其他方法,然后每个横切位置看成一个X轴。另外把方法从上到下的这个顺序看成一个Y轴,而X和Y轴的交叉点就叫连接点啊,这时候我们从字面上的解释,那通俗来说什么叫连接点?也可以这么理点,就是此文里边允许你使用通知的地方就叫连接点,那大家想一下啊,这个地方就太多了,我在方法前,在方法后是不是都可以用这个地方,所以这个就叫连接点,就是通俗说你允许使用通知的地方就叫连接点。
05:29
然后再来看切入点,什么切入点给大家说明啊,你可以理解为我们现在通过此轮的A技术,可以直接定位到你的特定的临接点,比如定位到方法之前,定位到方法之后,然后这个时候通俗说就是实际去增强的方法,那个地方就叫切入点,比如现在我想对A的方法做增强,想在A的之后进行输出,这个就叫切入点。所以以上是咱说的基本的术语,然后最后我们来看啊,就是如果说啊,我们是一个简单代码,其实咱们可以把重复代码直接抽取就可以了,但是如果你代码比较复杂,比如咱们之前写那个日志里边每个方法中都做了输出,这个时候咱就不好抽取,那怎么做也可以用A的思想进行实现,把特定功能放装到你的切面类中,然后把它用在咱们那个目标方法上,最终实现一个增强。比如咱之前写的一个计算器的例子,通过动态代理,在之前和之后分别做了输出。
06:34
所以以上啊,就是咱们解释的a op中的基本概念以及相关的术语,然后这个术语,然后面在实际例子中会有具体的体现,这个咱们先介绍到这里。
我来说两句