温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
好,下面我们要写的呢,是专门负责事物的filter,哎,我们事物的这个过滤器,我们会给它起个名字呢,叫transaction filter。首先呢,我们先来说一下它总体上的一个工作流程。当一个请求过来的时候呢,会先经过我们过滤器的do filter方法。在这个do filter方法里边,我们首先要做的呢是获取数据库连接。然后呢?哎,当我们把呃数据库连接获取好以后,下一步哈,就是这个相当于是核心操作就是这个调用我们do方法。然后这个请求呢,就会进入到我们这儿。再下一步呢,找我们service service呢,就有可能会找多个deal啊,当然前面这其实filter过来以后,它也会覆盖很多个service啊,我们这儿只是拿着一个举个例子。会覆,呃,Service里边,因为同一个事物有可能有多个操作,所以它下边呢,可能会覆盖到多个do,也就是说呢,它在这依次去调用这些do的方法啊,当这些操作都执行完了以后,相当于呢,方法逐步逐个一个一个返回啊,Do返回了,调下一个do返回调下一个,所有do都完了以后,Service结束,Service结束,Service结束,Service结束以后,哎,就相当于do filter方法结束了。
01:22
那么在我们这个方法里边调度filter方法结束以后就执行下一步。下一步呢,就是提交或者回滚事务,就看你这个执行过程当中呢,有没有抛异常。诶,然后呢,呃,事务提交和回滚啊,提交或者回滚这个操作完成了以后,下一步呢,就是我们释放数据库连接。这里边儿呢,有一个很关键的一个操作,就是我们获取数据库连接之后,哎,如何呢保证。我们各个do用的是同一个数据库连接,而且呢,就是我们在filter里边控制事物的这个数据库连接,这个其实我们也已经说过了啊,就是让JDBC.get JD bc us get connection啊,这个方法里边获取到数据库连接以后,给它绑定到当前线程上边。
02:09
这样顺着这个线程啊,往下边去执行的时候,他们都在同一个线程里边。那么我们就可以。在do里边啊,从当前线程上获取同一个数据库连接的这个对象。哎,这个呢,就是一个我们总体上总体上的一个思路啊,之前呢,其实这个代码呢,我们都已经写的差不多了啊,写的7788了,哎下下一步呢,咱们就把它具体把这个filter呢给它建出来。
我来说两句