00:01
来我们接着说啊,那么接下来呢,我们再来说一下啊,就是最后一个了,我们说一下就是功能比较强大的一个通知,我们叫做环绕通知啊,啊,那这个环绕通知又是怎么执行的呢?哎,你就可以把它理解为环绕着我们的目标方法执行啊,那怎么个这个环绕法呢?对吧,你就可以理解为什么啊,可以理解为啊,可以理解为是什么呀,是我们这个前置后置返回异常通知的一个什么结合体。就是我这个烦号通知,我可以做到你前置后置返回异常通知的功能,能明白了吧,就可以什么一个顶你的四个是吧,那么它其实更像什么呀,更像是我们动态代理的整个过程,好那么我们把这个来写一下,对于环绕同志来讲比较特殊啊,他必须得是一个啊不价类型的,就是声明一个返回执类型,像我们上面这些通知是都没有这个返回值类型,对吧?对于环耀同知来讲必须得有,因为什么呀,因为在这里面我们需要去调用到我们的目标方法,那么他就有结果,有结果我们就必须要给人家去返回回去啊,那么这就什么around method,好,这个的话我们简单的去写一写,用什么注解呢?用的就是一个around注解,好,这里面我们依旧要去写我们的切入端表达式,哎,就是这个值,我还是直接把它拷贝过来放到这就行了,好,那么对于这个环绕。
01:42
按这来讲的话,大家注意啊,它里面最重要的一个就是什么呀,去执行我们的目标方法,因为它更像是这个动态代理的整个过程,那我们就要去看一下我们写好的这个动态代理里面都写过什么东西啊,大家再来回顾一下,嗯,在这个动态代理里面,你看一下,这就是我们动态代理的一个整个过程吧,对吧?那么其实环绕通知里面写的代码跟这个是特别像的,我们来看看啊,应该怎么写,首先我们就要去围绕着执行目标方法来去写,那么如果你想执行目标方法,你得有具体的对象去执行啊,所以说呢,这个位置我们需要用到另外一个对象,叫做什么呀?叫做proceed啊,啊叫做啊,就叫做PP吧啊,那么它其实也是一个连接点,对象啊,那么它跟这个join point的关系是什么呢?我们可以来看看这个proceeding join point大家可以看看。
02:42
它是继承了join point的,看到没有,那也就意味着我们现在所使用的这个proceeding join point,它就是我们join的一个子类,那说白了还是一个连接点对象啊,而只不过这个对象呢,它的功能更强大一点,因为它里面有一个proceed这个方法就是在去执行我们的目标方法的,当然它会帮我们返回一个结果啊,这个结果就是一个哦价类型的一个结果,能听懂吧,那么只不过呢,它是有一个异常的,我们就必须要给它拆开起来,而只有拆开去起来以后呢,我们才能去实现我们的前置后置返回异常的这个功能,大家来看这一行是执行目标方法,那么目标方法之前,我这个地方是不是就是一个前置的功能啊,对不对,是不是在这个方法执行之前,我就可以做我前置的这个功能了吧,怎么做呀,你就在这去写你的这一行代码是不是行了,把它写到这是就可以了啊不是。
03:42
啊,把这个写到那是不是行了,是不是一相当于个潜质了,能明白什么意思吗?OK,我就不写了啊,大家下去以后你可以自己去试啊,然后呢,呃,正常这个方法执行结束以后,就是这行代码执行结束了,没有抛出异常,那就该返回了吧,我们是要给人家返回一个呀,是不是啊,OK,那么在返回之前,那么正常执行结束了,那这个地方是什么呀?后置啊后置返回吗?
04:13
正常执行结束不就是一个返回通知吗?对不对,而后置我们可以把它理解到什么地方呢?因为它不管抛不抛异常都会执行,所以说呢,我们更适合把它放到find里面,就是我们的后置通知,能听明白这个意思吧,然后呢,抛出异常以后的话,那这里面就是我们的异常通知呗,那你来看一下,我是不是又可以通过诶一个环绕通知就去实现我的前置后置返回异常了,能明白这个意思了吗?OK,那么大家下去以后,自己可以把这个补上啊,给大家尝试着去写一写,我呢就不再给你去写了,因为什么呢?因为我们不会把这个环绕通知跟我上面的这几个通知一起去使用,听懂了吧,要么你就单独使用环绕通知,要么你就不要使用它,而是使用上面的这几个通知,因为功能是差不多的。
05:07
听明白了吗?OK,所以说这个大家下去以后自己去试啊,那么现在还有一个异常的,呃,还有一个问题的是什么呀,就是它检检测不到你这个返回值在什么地方,因为你的称是不是写到串里面了,对吧?所以说为了解决这个编译错误的话,你在最后呢,给它称一个空就行了,听懂了吧?哎,你在最后呢,给它称上一个这个空就行了啊能明白这个意思了吗?听懂了吗?OK,好,那么我们把这个啊环绕通知给大家简单去说一说,下去以后你可以自己把这个东西给它补上,然后呢,自己去测试一下,听懂了吧?啊所以说呢,在我们讲的这个整诶关了啊,在我们讲的这个整个的这个通知里面,谁的功能最强大啊,哎,就是我们这个环奥通知功能最强大,明白了吧,OK。
我来说两句