00:00
啊来接下来呢,我们再来说一下a op的这个术语啊啊啥叫做术语啊啊就是专业名词是吧?啊来看看吧,都是都是啥东西哈,横切关注点,切面通知目标代理连接点切入点。啊,这都是专业术语是吧?啊来吧,这个比较头疼啊,但是呢,我们也是能理解的啊,我们就挨个来给大家解释一下,呃,刚才我们说过了是吧,说过什么呀?说这个a op主要的编程对象就是谁来着?诶,切面,那我说你只要把切面写好了,切面会写了,整个a op也就没啥问题了,是吧?啊,这是对于a op来讲,那么对于这个切面来讲,我怎么就能把一个切面会写了呢?那么下面这些东西你必须都得知道啊是吧?来吧,看一下吧,首先第一个横切关注点,那么其实这个我们刚刚也提到过了,就是从每个方法中抽取出来的同一类非核心业务叫做什么横切关注点,大家来理解一下,现在我们可以把我们写过的什么当成横切关注点啊,哎,就把你那个,比如说这是我的ADDDD方法,把你addd方法里面所有写过的那个日志相关的代码。
01:27
啊,给他什么从这个方法中拿出去,明白了吧,拿出去,那么其实这个东西拿出来以后呢,它就是一个横切关注点了,其实这个横切关注点本身呢,就是一个功能,能明白了吧,就是一个功能好理解了,这个哎,好理解啊,那切面呢,就更好理解了,对不对,就是封装横切关注点信息的类,比如说你看了哈,我把这个,呃,方法前记录日志啊,方法后记录日志,那我还希望你方法抛出异常以后记录日志,方法正常结束以后也记录日志,这些每一个是不都是一个横切关注点啊,你把这些呢,通通的给它什么,从我的方法中给它抽取出来,抽取出来以后,那这个东西我放到什么地方啊,我得给它单独的写到某个日志的什么功能里面,那么这个比如说我把这个这些东西都抽取到这里面了,那么其实这个类就是一个切面,切面是什么呀?就是来封装你的横切关注点。
02:27
听懂了吧,然后呢,每个关注点呢,将来体现的都是一个通知方法,也就是下面我们要去说的这个通知。这个切面能理解了吗?可以了吧,来,再来往下看通知,啥叫做通知呢?就是你切面必须要完成的各个具体工作啊,那么这个其实就是一个反向的啊,你看刚刚呢,我们把各个横切关注点,比如说日志,日志日志对吧?就是各种记录日志的功能,把它抽取到我们这个界面里面了,能听懂吧,那么你说我这个切面有哪些功能啊,无非就是这个地方记录日志,这个地方记录日志,这个地方记录日志呗,是不是OK,那么其实每一个就是切面里面的每一个功能,我们就把它称之为一个通知。
03:17
明白了吧?诶,切面里面能做的这个功能,每一个,比如说方法前的,方法后的,方法抛出异常的,或者方法正常执行结束的,每一个记录日的功能,我们就把它称之为一个通知,明白吧,也就是界面必须要完成的各个具体工作,能听懂这个意思了吗?OK,就叫做通知啊,其实这几个概念还是比较好理解的,下面这两个也比较好理解,目标和代理,目标那就是被通知的对象就是我们的目标对象嘛,代理呢?那就是我们生成了这个代理对象呗,这两个还需要解释吗?不用解释了吧?OK,其实上面的这几个概念呢,还都是人能看得懂的,对不对啊,下面这两个概念啊,我就不敢保证能不能看得懂了哈,但是我们也是能理解的。来吧,说一下这个连接点,连接点它这个怎么解释的呢?注意啊,横切关注点在程序代码中的一个具体体现,对应程序执行的。
04:17
某个特定位置,比如某个方法调用前调用后方法捕获到异常等,那么这些东西呢,我们都把它做成一个连接点啊,在应用程序中可以使用什么横纵两个坐标来定位一个具体的连接点啊,你说这这这这什么东西是吧?啊,那你你你这个图你能看懂吗?啊,能看到吗。啊,其实也比较能看得懂啊,你看一下横坐标呢,就是我们各个模块中可以执行的方法,比如说像我们这个啊加减乘除那个什么算术计算器里面不是有这个加,然后呢,减乘除等等一些方法吗?对吧,这个这是横坐标,纵坐标呢,那比如说你看,那么当我定位到我具体的这个方法的时候,那么在这个方法里面我就有这么几个方位,比如说方法开始捕获异常,方法结束。
05:18
是不是这几个点我们都能找得到的对吧,那么他就通过,首先我要知道你的方法在什么地方,另外我要知道你方法开始,方法捕获异常,方法结束,对吧,我就可以通过这几个信息呢,来去定位一个具体的连接点。啊,具体的连接点啊,那么最后的话呢,大家注意哈,我可以让你很简单并且很迅速就把这个连接点给它记住,就是什么意思呢,一个类中。比如说我们的算术计算器啊,那么它里面的连接点是谁呢?你就继承每个方法就可以了。比如说我有加减乘除四个方法,好,那我就告诉你,这加减乘除四个方法就是四个连接点,听懂了吧,就是四个连接点能理解这个意思了吗?能听懂了吧?哎,你就把它记成连接点就行了啊,你就不要再去很深入的去理解什么啊,横纵两个坐标了,对吧?这个就不大不大好理解了,你就记住一个目标对象中的什么加减乘除四个方法,那么它就是我们的连接点。
06:29
记住了吧,OK,好,记住这个,以后我们就能来说这个切入点了。啥是切入点呢?就是定位连接点的一种方式啊,你看哈,每个类呢,都有多个连接点,所有的连接点都是客观存在的事物,能明白吧,都是客观,比如说你看我这个内容总共有什么加减乘除四个方法,那这四个方法它就是客观存在的,这四个就是四个连接点,好,那现在我有个问题,什么问题呢?比如说我有一个日志的什么切面,我想把这个切面的功能呢,作用到你这个方法上面。
07:11
对吧,具体的话就作用到你的每一个连接点上面吧,对不对,能明白什么意思吗?OK,那我怎么作用上去呢?就是我怎么找到你这个方法呢?哎,我们就要用我们的切入点来去找,所以说怎么理解这个切入点呢。大家听我讲,你可以把这个连接点呢,看成是数据库里面的数据,比如说你看啊,我数据库里面呢,有这么几条数据,每一条数据呢,都是一个连接点,听懂了吧,而切入点呢,就是一个查询条件,比如说我通过一个切入点,好,我到数据库里面呢去找我的数据,比如说我找出了这两条数据了,那说明我当前的这个切入点能切入到你的这两个方法上面。对吧,就相当于一个查询条件啊,然后AOPP可以通过切入点定位到特定的一个连接点啊,可以通过切入点呢,去定位到一个特定的连接点啊,那么其实我们还可以怎么去理解呢?刚刚我不是说过吗?这个每一个方法都是一个什么来着。
08:21
连接点吧,OK,好,那假如说现在我把日志功能作用到了这个连接点上了,它其实就是一个切入点了,明白了吗?它其实就变成一个切入点了。好吧,所以说呢,诶,整个这些概念呢,你不能单个去理解,你对应它什么,整合到一起来去理解,好吧,那么接下来我们再通过一个图啊,通过这个图呢,再来给大家去说一说啊,就是我们刚刚提到的一些概念,大家注意啊,首先这个图呢,分成两部分啊,左半部分能看得懂吗?啥意思啊,就是每个颜色代表的是什么吗?能看懂吧?OK,那还有三囊的呀啊一个图半张图你都看懂了,那右半吗?右半张不也很好理解吗?
09:11
是吧,能看到吧,这个中标部分能理解什么意思吗?对吧?就是每个颜色代表的是什么?来吧,那我们就来看一看啊,首先最大的这个圆就是我们的目标,那目标里面呢,我们有四个方法,那你看就是加减啊,乘除看到了吗?是不是有四个方法呀?OK,这四个方法就是一个连接点,你看到没有,是不是这个颜色的,能看明白这个意思吗?OK,好,现在呢,我有一个切面,切面就是中间的这个小圆,比如说我的日志切面,那么我们刚刚说过,切面里面它要完成的工作是不是就是一个通知啊,对吧?那你看这里面我就可以有各种各样的通知,前置的后置的什么什么通知,什么什么通知,就是这个绿色的通知,理解吧,OK,好,那我这个将来我这个界面里面的通知,肯定是要想办法作用到你具体的这个方法上面的吧,OK怎么作用上去呢,大家注意。
10:12
我们怎么从这个让这个通知作用到你这个方法上面呢?我们需要用到一个就这个过程,我怎么去找你呢,我需要用到一个切入点表达式,明白吧,我需要去写一个表达式啊,就相当于你需要去写一个搜口语句,去查那个数据,是一个道理,能理解吗?哎,你写一个切入点表达式,然后呢,我就能去找着你这个方法,当我找着你这个方法以后,我把我的这个通知作用到你这个连接点上面以后,它整个这个连接点呢,也就变成了一个切入点了。能明白了吗?所以这个图你这么看的话就特别好理解了,你看了哈,整个是我们的一个目标,目标上面呢,有各个连接点对吧,我还有一个通知啊,呃,上面我还有一个切面,切面里面呢有各个通知,那我切面里面的通知怎么作用到你这个连接点上面呢?我需要有一个表达式,那就是我的切入点表达式,我通过这个表达式作用到你这个连接点上面以后呢,诶,你这个连接点就变成了一个切入点了。
11:18
能理解了吗?其实也好理解吧,对不对啊,就是概念比较多,但是你具体理解的话也没有什么难度,能听懂吧,就是他这个概念吧,就是比较那个,呃,就是那个不通俗是吧?啊,不是很通俗易懂的那种,就是叫做什么什么切入点啊,什么连接点,对吧?啊,这个概念呢,不是很通俗易懂,但是呢,诶,经过我们解释以后呢,大家应该也是能把它理解了的,明白这个意思了吧,OK啊,行吧,呃,那我们就把这几个什么基本的AOB术语呢先介绍到这啊,你现在能理解多少就理解多少,接下来我们要通过具体的代码来给家去讲,那么这里面所有讲过的,所有说到的东西,我们都会在代码里面给大家体现出来,你再结合上代码再去理解它,听懂了吧,OK。
我来说两句