00:00
各位同学大家好啊,刚才咱们完成了注解方式声明式事务管理,它的做法就是在service类上边我们添加上一个注解transactional,然后最终实现事务操作。而在这注解里边有很多针对事物中详细的配置,那下面给各位来做一个详细的说明,我在课件中写一下啊。咱们要做的就是在我们这个叫声明式事务管理里边有一些参数的配置。咱们来看一下啊,我这里列出来了,我们能配置一些常见参数,大家看一下啊,首先第一个参数叫provocation。然后这个参数什么意思呢?它就表示事物的传播行为,第二个叫隔离级别,包括你看还有这个超时,时间只读等等,那咱们先说第一个,就是里边这个叫传播行为,我在里边写一下啊proation。咱们来介绍这个东西啊。
01:00
呃,拼写错了啊,写一下。啊。然后他表示,事物的。传播行为,那什么叫事物传播行为,给各位做个解释啊,大家可以想一下啊,这个传播肯定一个人不能传播,如果咱们在日常生活中,咱说这个传播,那指是不是我们两人之间传播,比如说调一个消息传播给你啊,这叫传播,而事物传播行为什么意思呢?这里边说一下啊,比如现在我们有两个事物,一个事物A,一个事物B,然后里边都有方法,那我事物A的方法标事物B的方法,这过程中这个事物方法该如何进行?这就叫事物的传播行为,我在里边写一下啊,就是现在我们指的是啊,当我现在一个事物的方法被另外的一个事物方法调用的时候,那这个时候这个事物方法该如何进行,就是事物该如何进行处理啊,这个叫事物的传播行为,给各位最后说明,然后事物传播行为咱往下看啊。
02:07
我这里列出了词文里边定义的七种传播行为,咱们重点介绍前三个,第一个叫require,第二个叫require的new,第三个叫boss,那下面给各位详细说一下啊,咱通过画图来做个解释,首先我们先看第一个叫,然后把这个在图里边给各位详细解释一下啊。我画个图。块的,咱们来读一遍啊,这种行为指的是什么呢?如果有事物在运行,那当前方法就在事物内执行,否则就请一个新的事物,并在自己的事物内运行,这个叫request,那这么读一遍啊,各位可能不理解,下面我画个图来做个说明,给各位画一下啊。比如现在我画两个框,代表咱们的个事物,比如说啊,左边部分我们就叫这个事物B啊,或者事物A一样的,我就叫事物B了啊,右边部分我们叫这个事物A,然后在左边部分,比如说咱有一个方法,我就叫这个方法一,然后右边部分数A里边有一个方法,咱们叫方法二,为了方便我写到外边啊方法二,所以现在这个场景,那这场景中我们要怎么做呢?比如现在啊,我方法二去调用方法一的过程,这事物该怎么处理,咱们用块的方式,那各位做个说明。
03:35
这里强调啊,就是这里边过程中如果说啊,咱们现在就是单独去执行这个事务必中的方法一,那这里边就是我这个方法肯定会开启一个事物啊,他请会开启一个事物,就是这个事物B肯定开就是单独执行,它是单独开启这个事物,但是现在我们要做的叫传播行为,什么叫传播行为,我在事物A里边。
04:00
用方法二去调用方法一,那我写一下啊,方法二去。调用这个方法一,那这过程该怎么做,用蕊块的方式给各位写下啊,我小下边。就是现在啊,当咱们方法二调的时候呢,他肯定会开启咱的事物,就是这个事物A。啊,就是调用方二开启视为,但因为方法二他要去调用方法一啊,他在调用方法一的时候怎么做呢?这个时候你方法一它也会加入到我当前这个事物A里边来,这过程就叫块的这种方式啊,我再说一遍啊,就是事A数B,然后里边两方法,如果你单独执行这个方法一,那就是独立单独开启这个数B,但是现在我这里边方法二调法一的过程怎么做,调方二的时候会开启事物A,而他在调方法一的时候,方法一也会加入到当前这事物A里边来,这一过程就叫做蕊块的方式,这各位给他知道啊,所以咱们介绍的第一种方式。
05:08
然后这个之后给各位再来介绍第二种方式,咱看一下啊,第二种方式呢,就是这个它叫做。蕊块的妞,我把这个拿过来给各位进一步说明一下。我在图里边。咱们先读一遍啊,什么叫require new呢?就是当前的方法必须启动新事物,并在自己的事物内运行,如果有事物正在运行,应该将它挂起啊。这是一个比较术语的描述,那具体什么意思?同样给各位画个图,咱们来说明一下啊。我在里边呢,还是画这么两个框啊,还是两框,然后左边部分,比如说我们叫这个事B。啊,还是按照我的习惯啊,就是事无弊。右边部分我们是这个叫视为。这是两个事物,比如说在事物B中呢,咱有一个方法,比如我叫方法,咱就叫方法B了,啊,刚才咱们看,然后事物A里边一个方法,我就叫这个方法A。
06:11
这个啊,而我现在就是还是刚才这个流程啊,我在方法A里边要去调用这个方法B。这个过程中事物该怎么处理,咱们刚才按照蕊块的方式,我们提到了,目前说的是蕊块妞的方式,那怎么做?给各位说明啊,首先第一个啊,同样如果说你单独执行方法B,它肯定还是开启一个数B啊,但是我现在是传播行为,我方法A中要调方法B,那怎么做,按照require new的方式,我这里边给各位来画一下啊。比如现在里边是这么一个过程,我就换个颜色画到这里啊,就是我现在调用方法A的时候,方法A事物这事物,比如说咱给它起个名字啊,我就叫这个T1啊,这是事物,而我方法B是不是又事物这事物,比如咱就叫这个T2啊,咱有两个事物,那这个require new的方式中,各位可以这么理解啊,这个T1就是我的事物A,它就是我们这个叫外层事物。
07:13
啊,外层是我,因为你A调B嘛,那我A就是里边的外层是我,而里边的T2就是这个B,那它是我里边这个叫内层的事物,所以它分成两部分,一个叫外层,一个叫内层,那这过程中怎么执行的呢?各位可以这么理解啊,T1跟第二内层外层它们互相就互相干,而我这时候T2它并不依赖于T1,比如说这个过程中,比如说我现在啊,我这个T1。他调完方法B之后出现了问题,那其实我这个方法B他依然能提交,他不会做回滚,所以他们不影响。这是我们提到这个叫快new,比如我这个T2跟T1互不影响,当我方法A调方法B之后出现了问题,我方法B依然能正常提交啊,这就叫蕊块的溜的方式,也是这句话在他自己的事物内运行,所以它分成了外层和内层事物,各位可以从这个层面去理解,这就是蕊块U的方式。
08:13
然后除了这个之外,咱们再教一种方式,第三个叫suppose,这个各位也做个介绍。我把这个拿过来啊,咱们画一个新的图做个说明。然后大家看啊,这什么意思,这里写到如果有事物在运行,那当前方法就在事物内运行,否则它可以不运行在事物方法中,那这个什么意思,咱们也是给各位画个图,进一步说明啊。同样啊,我现在比如说有两个框啊,代表咱们的两个部分,比如左边这是我们这个,比如就是这个数币。写一下啊,竖臂右边是我们这个示威。那现在在里边同样有方法,如这里边我一个方法,比如咱叫方法B啊,这里边我们叫方法A,还是刚才这个过程啊,那现在我们说这个过程怎么样?方法A最终肯定会调用我们的方法B啊这个过程,那咱看啊,假如现在我这个场景啊,就是我这个方,就是事物B上边它的这个传播行为叫suppose,就这种行为。
09:21
啊,这里啊来写一下,然后比如说我们事物A里边呢,还是之前这个行为叫块的啊,咱用这个为例,你这么解释更加明确啊,那大家看啊,现在它是怎么样一个过程呢?咱做个说明啊,就说现在如果输币是s support的方式,我们现在如果说单纯去调用里边的方法B,那方法B可以在非事物的状态下进行啊,就这句话,如果现在我方法A去调用方法B,那这里边肯定会开启一个事物A,而方法B会加入到当前的事物中来啊,这种方式就叫support,就咱写道的。否则他可以不在不运行在事物中啊,称为suppose,所以以上啊就是我们提到的事物的传播行为。
10:07
各位重点把我说这个块的和蕊块new给它记住,这个我们就说到这里,然后一会儿再来介绍它的其他的参数配置,包括这个就是。隔离级别,超时时间等,这个咱们先说到这里。
我来说两句