当前位置: 首页 > 网络应用技术

交易管理来源阅读路径

时间:2023-03-09 00:18:11 网络应用技术

  本文主要记录学习交易管理的学习路径。读者可以比较他们的学习路径,并一起讨论更好的学习路径。

  接下来,它将根据基本路径进行扩展。源代码的顺序只会提取核心点,读者需要自行调试。

  参考

  门户网站

  交易管理

  Spring Framework完全支持交易,为交易管理提供一致性抽象。跨不同交易APIS的固定编程模型。支持声明声明。声明声明。随着Spring的数据库访问抽象完美集成的访问。

  通过阅读上一篇文章,如果您使用语句交易,您可能会知道,弹簧框架的核心具有Ampact-Platformtransactionsman,可以管理资源的中心委托和交易的中心委托,并使用AOP Proxy and-transactionsychrnoizationmanager,并使用AOP Proxy.beanpostProcessor-abstractautoproxycreator,与PlatformTransactionsManager合作,实现围绕方法驱动的TransActionInterceptor。

  以下将是一个简单的交易示例(使用mySQL,mybatis-plus,spring-boot)来绘制时间顺序图以查看核心类的作用。

  模范

  一般电话如下:

  核心顺序应为:

  核心类的源代码如下,核心周围的其他源代码将参与其他章节。

  可以看出,代理的产生发生在初始化的后期。该事件是CGLIB代理,而不是JDK动态代理。

  呼叫主要关注交易室内受体,并且处理周围事务的设计方法。例如,当您获得TransActionAttributesource时,确定特定的交易管理器,确定是否根据交易的背景来创建新的交易,绑定资源和约束资源。

  核心中的代码代码

  总体而言,可以看出,@enableTractionManagement将影响全球APC选择,并且还会影响TransactionAdvisor的顺序,这对于处理多个顾问非常方便。

  至于为什么@enableTransActionManagement默认默认adviceMode.proxy,proxytargetClass = false不能实现接口,并且可以使用 @transactional,因为最终的APC是AnnotawareaspectJautoproxycreator。

  根据上面的顺序图,可以发现AdviceModeImportSelector#selectimports输入参数是不同的。如果添加它,如上所述@configuration是我们编写的应用程序。如果您不添加@configuration。

  发现类似于普通注入。注射的tryservice是预先表示的豆。

  组合序列图,调用时间绘图,@enabletransactionsmanagement计时器图,我们将合并。

  首先,您必须了解管理层的对象是谁。以下是本地人用JDK编写SQL的本地人

  主要是建立连接,重复使用连接和清理的连接管理。特别是,可以根据上述呼叫的顺序来理解TransActionManager和TransactionsynchronizationManager之间的合作。

  春季交易的底层取决于物理交易,例如MySQL。连接打开了物理交易。逻辑交易是为了根据传播确定当前交易的行为(例如挂起当前交易以打开新事务,或加入当前交易)。根据业务逻辑控制物理事务。物理交易对应于连接,连接可能具有多个逻辑交易。

  默认传播。需要通过上面的“呼叫序列图”来理解。以下将解释通常的传播。Propagation_nested通信行为。通过比较默认的沟通行为,春季对逻辑事务的处理可能会更清楚,与此同时,它也可以看出事务的回滚。以下具体图:

  可以看出,问题_nest并未创建新的交易来处理现有事务,更改TransactionStatus属性,尤其是SavePoint,最后执行基础数据的“回滚至保存点”语句(表明这种通信行为需要基础数据的基础数据。支持),然后返回到外部IndokeWithTransaction。

  TransActionLealeventListener是在TransactionsynchronizationManager中注册的ApplicationEventMulticaster。TransactionsynchronizationManager提供了一些交易钩,以根据交易执行您发布的交易。