00:01
呃,下一步呢,实现声明式事物的思路。哎,我越来越觉得这个套路非常啊,哎,什么其实都可以去归纳成目标思路代码,目标思路代码啊。将来我讲完课以后,如果有幸能够承蒙大家的认可,你们在评论里边,你们就不用写别的目标思路代码啊。然后保持队形啊,我就非常的,我就我就看到我就能感觉到你们对我的认可啊。这个思路是啥哈,这个那由spring这边去配置的话,它和这个。呃,这个这个叫。编程式哈,确实这个样子表现出来这个样子确实就差别就很大了。呃,我们画一个图。这个比如说呢,你看我们生命是这个事物哈,事物通常我们是围绕着service方法。围绕着我们业务逻辑层这个service方法,假如说在这咱们有一个in service。
01:06
哎,这个我们可以把它称之为是写的这个伪代码。伪啊,真假的那个伪。嗯,其实这个跟map关系倒不大。假设在这儿有一个方法,Public。VO savedin哈。呃,然后这里边儿呢,有些个什么操作啊,这个咱们就简单写了。呃,我们是想哎这一块咱们是,哎由这个事物呢来进行控制。这玩意儿他咋控制哈?那么我们说是希望哈这个service里边的这些个方法。他其实呢,他都能够。
02:01
被我们,呃,这个事物的管理体系呢,给他定位到啊,那么定位到呢,其实是有两种不同的办法,一种是基于注解的。哎,我们可以加transactional这个注解,呃,可以加在类上,可以加在方法上。啊,那你加在方法上,就是加在哪个方法上,就定位到哪个方法,哪个方法就有失误。啊,就是就是这样一个关系,那我们说呢,基于注解这个比较简单啊,这个我们只需要在配置文件里边,咱们去开一个TX啊,生命是事物这的一个注解驱动。即可。哎,前面当然还是配一个事务管理器啊,Transaction的一个manager。Manager,哎,呃,配事务管理器,事务管理器里边呢,装配数据源。装配数据源,把事务管理器给这个,呃,TX的注解驱动,然后这边在你方法或者类上写这个注解就行了。
03:02
啊,这就是说我们的这个,呃,基于注解的生命师事物,其实它很简单。那么在这儿呢,咱们,呃,既然既然花功夫讲的话,咱们讲一下这个GX毛的这个啊。如果是我们基于X毛的方式去配这个方法,或者类上就不加那个注解了,不加那个注解呢,我们想定位到这个方法,咱们就得靠这个切入点表达式。切入点表达式,这是一个我们a op里边的一个概念,哎,从这来说呢,我们生命事物呢,也确实是和我们切入就是a op呢,有千丝万缕的联系。哎,切入点表达式哈,这边去去去去定位到定位到这个方法,那这个切入点表达式我们配的时候是在哪配哈。在spring的配置文件里面,当然是,然后它应该是在A的。
04:02
里边啊,去配这个,它那个有个属性叫X。哎,后边这是execution啥啥啥,这边咱们这就先不写那么具体了啊,咱们就先先大概写一下。哎,切入点表达式是用这个去配切入点表达式。然后呢?嗯,这个切入点表达式。需要和我们事物的。通知呢,给它进行一下关联,所以说这边呢,A这还得去配一个a adviser。A adviseor。在这儿呢,去关联一下这个切肉点表达式。哎,然后呢,去关联一下我们这个advice。哎,他需要把这个切入点表达式和我们下边要配的事物的通知呢给关联到一起。
05:01
然后呢,他们两个。它们两个合起来是在我们up config里边。啊,就是这个,其实我也是评一下哈,也可能个别的字母呢,可能敲的不是特别准确哈,这个没关系,我们到具体配的时候,因为它有提示啊,所以我们这边能记住个大概就行。哎,这边A看这。哎,在a op conf里边呢,去配哎这个切点表达式,然后呢,去引用切入点表达式,这边去关联我们的这个呃,事物的通知。那么事物的通知呢?我们需要去配这个TX的advice。哎,这里边儿呢,需要指定一个ID。哎,这个ID呢,比如说就叫TX advice哈。哎,那么这个地方和这儿呢得一致。
06:10
我们标记成一样的颜色哈,然后让大家感觉到它这个是一致的,因为这个划线的话。呃,再放大一点划线可能。呃,一会儿有别的这个线都交交叉在一起就容易乱。然后呢,这个在事务通知,这还需要去关联一下这个事务管理器。哎,这个穿塞。Manager。诶,他得要关联事务管理器。这个事务管理器呢,就得在我们提前去把事务管理器呢,给它配出来。哎,我们得用一个并。
07:00
去配这个事务管理器。ID。Class。这个事务管理器呢?啊,Control shift t哈。它有一个顶级接口叫platform。Data platform transaction manager,这是所有就spring这所有的事务管理器的顶级的接口啊,最顶头的就是它。所有的事务管理器呢,都是它的,可以叫都是它的。事件类或者是呃子接口什么的啊,都在它的下边。CTRLT去看一下它的这些个。呃,小弟。我们用的是data source transaction manager,哎,我们用的是它。呃,这个。这个截个图。
08:02
然后我们这儿我们用的是。我们用的是他。你看这个harmlet哈,你看harmlet有345HARMLET,每个大版本它都给它专门提供一个事务管理器啊。嗯,这个表面上看是harmnet待遇好,那实际上来说呢,是harmonlet它太复杂啊,它这个你像我们买贝蒂斯就很简单,就用数据源的售务管理器就可以。哎,咱们先把这个拿过来啊,说选择合适的事务管理器。哎,我去这个图好大哈,哎,那然后呢。这边呢,我们配的这个就是data。Transaction manager。我就简单写了哈。然后呢,这个地方呢,比如说叫TX manager哈。
09:02
那么这个这个东西要放在这儿。啊,他俩是一样的。标记个红色。这个颜色一样的啊,就是要求是一致的。嗯,哎,事务管理器呢,给它装配到这儿。我想想啊,对,它里边还需要数据源。把数据源呢给得装配给他。数据员装备给他。嗯。对,这回咱们可以叫。来一下哈,就是这个事务管理器这个。装配到这儿。
10:02
这个放下边吧。在哪下载?哎,然后。嗯,这个装配给他。然后呢,我们这个TX这个advice呢,是给到的是他。再想想啊,这个。对,然后是这两个合起来是a config这边配TX advice,然后哎,这个这是ID,然后在这去引用,这个引用的是trans manager的这个ID数据源给trans manager给它装备进去。
11:00
然后呢,这里边儿还有就是在这个事物的通知里边,我们要配置事物的属性啊,在这里边儿我们要配这个事物的属性。哎,就是这里边呢,我们会有这个TTX的at tribute这么个标签。这个标签啊,就是假设他从这开始,然后到这儿结束。然后它里边呢。结束标签。它里边是TX的method。哎,在TX method的这个标签里边啊,我们需要去配的就是这个。呃,需要配事物属性,那事物属性呢,又有。又有这样一些事物属性啊,比如说传播行为。
12:04
隔离级别。嗯。呃,回滚异常。超时属性,只读属性。这些都是我们事物这儿可以配的事物属性。说到这儿的话,基本上我们是不是事故,这需要注意,需要配的东西呢,基本上我们就都都罗列出来了。哎,这就是什么是税务,这我们要配呢,基本上它配置文件里边哈,它其实是这么一个结构。而且呢,我们这儿说这个配置文件里边的东西和我们的这个Java代码啊,他们是怎么就关联起来了呢?啊,就是靠我们的这个。哎,切入点表达式啊,靠切入点表达式,哎,把这些事物的操作作用到你指定的这个方法上。
13:00
哎。呃,配置文件的一个结构。
我来说两句