首页 > 技术文章 > Spring AOP应用之一:声明式事务

ilovebath 2021-11-16 10:19 原文

  所有数据访问技术都提供事务处理机制,这些技术提供了API用来开启事务、提交事务完成数据操作,或者在发生错误的时候回滚数据。Spring本身并不支持事务实现,同时只是负责提供标准接口来处理不同数据访问技术的事务处理。该机制提供了一个TransactionManager的接口,不同数据访问技术实现使用不同的接口实现:

  

   应用底层如何支持怎么样的事务,需要提供具体实现类。这也是策略模式在spring中的应用之一。这些具体的实现如何应用到业务中就需要Spring AOP。从上图中可知在Spring框架中,也内置了一些具体策略,例如: DataSourceTransactionManager(JDBC) , JtaTransactionManager (分布式)等。

  什么是声明式事务呢?即使用注解来选择需要使用事务的方法,当然也可以是整个类。Spring支持声明式事务,使用@Transactional注解表示。

  以DataSourceTransactionManager为例示例事务(本质就是使用aop将事务控制逻辑编织入到业务代码):

    1)依赖:

      

     2)配置:

      xml:

        

         

       如混合注解:

        

       注解:

        

        在接口、类或方法上添加@Transactional注解

         

   补充:事务往往在service层进⾏控制,如果出现service层⽅法A调⽤了另外⼀个service层⽅法BAB⽅法本身都已经被添加了事务控制,那么A调⽤B的时候,就需要进⾏事务的⼀些协商,这就叫做事务的传播⾏

    A调⽤B,我们站在B的⻆度来观察来定义事务的传播⾏为
    

 

 

 

 

  

 



推荐阅读