在使用spring事务时,我们通常会把事务内的所有操作当成是一个原子操作.也就是当整个事务内的所有代码都执行完成后, 才会将所有的数据落实到数据库中.这样做有时也会给我们造成麻烦.比如以下场景: 根据图中描述的逻辑,如果我们把前两步封装到一个事务方法中,会造成当第三方服务回调我们服务时,我们根据id去查询记录时,发现记录不存在. 这说明,我们第一步执行的方法并没有生效.原因就是因为第1步和第2步同时存在于一个事务中,所以当执行第二步时, 数据库并没有生效,而此时, 第三方服务如果处理比较快的时候…