00:00
下边我们看啊。呃,数据的跨方法传递。这个事儿就是我们使用thread local的一个理由。啊,为什么这么说呢,大家看啊,我们现在的这个代码。我们这儿说了,要保证参与事务的多个数据库操作,使用的是同一个数据库连接。也就是说呢,这个do filter方法后边涵盖的所有的丢的方法啊,什么叫做涵盖或者覆盖呢?也就是说它呃,间接调用的。间接调用的。哎,我们写到这吧。所谓啊。呃。当前请求覆盖的这些方法啊。其实就是我们这个趁点do filter。它间接调用的方法。
01:06
哎,间接调用,为什么说间接调用呢?因为它到最后呢,肯定能调用到他们,不然的话,你想他们是就怎么就执行了啊,所以肯定是能够去间接的去调用,能够去调用到他们,但是呢,又不是直接调的。哎,我看我哪写错了啊。掉。哎。你看我们这儿调的是趁点do filter,趁点do filter呢,这个时候这个方法哈,它里边也会掉一些个相关这个他们盖的环境方面的方法,然后隔好几层才会走到我们service service下边走service,然后走,然后走do,所以说这个方法的调用呢,是间接调用的。呃,我们现在呢,就是要求啊。我们这个。
02:00
它后边覆盖涵盖间接调用的do的方法,用的全都是这同一个connection数据库连接的对象。但是呢,这个时候我们想实现这个效果呢,又有困难啊,有什么困难呢。我们在这儿呢,你获取到的这个数据库连接这个对象。哎,你获取到这数据库连接对象啊,下边想想在它后边哈,间接调用的方法里边要去用。我们这儿分析一下啊。嗯。哎。这是这是同一个方法里边的代码。然后呢,这个do filter方法,它下边呢,间接调用我们so方法。Sorry的方法去调方法。
03:01
写上啊。画一个箭头。哎,间接调用。最后一定能调用到它,只不过不是直接掉的啊,是隔了会隔很多层。呃,Service的方法,Service的方法呢,他再去调我们service方法啊方法,再去调do的方法。这就直接相当于这因为我们自己写的哈,都是直接调用的,我们就就用这个箭头了啊,下边再下来是我们的do的方法。
04:03
然后呢,你看我现在do的方法呢,有可能有好多假设呢,我们这儿有这么三个吧。哎,我们。横着画啊。嗯,哎,我这个。有强迫症啊,我一定要对齐了才行。它里边这样它会呃按顺序呢,去调这三个do的方法。然后呢,这三个do的方法都需要用我们这个connection这个对象。哎。啊,都需要这个通过connection这个对象。
05:06
啊,去操作数据库。为了让他们好看哈,让他们这边能够去对齐。嗯。好嘞。然后这里边儿我们就需要这个connection啊,它是同一个对象哎。这个出问题呢,给我们出难题哈,难就难在这儿了。
06:07
哎。画个箭头过来哈。呃,保证它们是同一个对象,如果是平常的话呢,我们就把这个connection对象,你接下来,因为这儿获取到它下边叫这个方法嘛,我们就从这儿就往这儿做传参数传进去,让他再传参数给他,他再传参数给他,他再传参数给他们依次调方法,传参数就传过去了。可是现在的问题是是呢,这connection啊,你从这啊想从这传参数,你传不进去,这个方法人家传的参数不是我们定义的啊,这个你传不进去。
07:08
哎。我们这儿怎么说哈。哎,就是这样画一下。这个框框啊,这个时候它代表我们这儿传的参数。我这儿给你写一个,这个地方呀,无法传参。对吧,哎,你这connection你想从这个do filter方法这传进来,这个传不进去啊,这是痴心妄想。哎,就是这个哈。
08:07
哎,你传不进去啊,到此为止了,那我下边这儿呢,又必须和这儿用同一个,你说这可这事,这可咋整啊,这可咋整。我传不过去,我怎么能拿到同一个对象,然后去操作事物呢?哎,这个时候呢,就有这么一个难题了,这个呢,就是所谓的这个跨方法传递啊,跨方法传递。嗯。我给这个connection啊。哎,然后呢,我在这儿啊。去写上啊,说这个是。哎,要求是同一个对象。哎,他要求是同一个对象,这也要求是同一个对象。
09:01
哎,怎么解决这个难题啊,这就是我们来local就要去派上用场了。
我来说两句