zoukankan      html  css  js  c++  java
  • Spring学习之Spring中AOP方式切入声明式事务

    mybatis-spring官方文档说明

    一个使用 MyBatis-Spring 的其中一个主要原因是它允许 MyBatis 参与到 Spring 的事务管理中。而不是给 MyBatis 创建一个新的专用事务管理器,MyBatis-Spring 借助了 Spring 中的 DataSourceTransactionManager 来实现事务管理。

    一旦配置好了 Spring 的事务管理器,你就可以在 Spring 中按你平时的方式来配置事务。并且支持 @Transactional 注解和 AOP 风格的配置。在事务处理期间,一个单独的 SqlSession 对象将会被创建和使用。当事务完成时,这个 session 会以合适的方式提交或回滚。

    事务配置好了以后,MyBatis-Spring 将会透明地管理事务。这样在你的 DAO 类中就不需要额外的代码了。

    Spring中的事务管理分为两类:

    • 声明式事务:使用AOP方式进行事务管理(本文章使用此方式)
    • 编程式事务:需要在具体的代码中进行事务的管理

    Spring开启声明式事务步骤

    1.在Spring的applicationContext.xml中配置声明式事务

    <!--配置声明式事务-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <constructor-arg ref="dataSource"/>
    </bean>
    

    dataSource是applicationContext中配置的Spring连接数据库的数据源

    2.结合AOP实现事务的置入

    注意要导入tx的命名空间

    <!--结合AOP实现事务的植入-->
    <!--配置事务通知-->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <!--给哪些方法配置事务-->
        <tx:attributes>
            <tx:method name="*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>
    

    这一句中 * 代表的是给所有的方法配置事务,也可以给具体的方法配置事务
    propagation配置事务的传播途径,默认是REQUIRED,也可以不加,意思是:支持当前事务,如果当前没有事务就创建一个事务,其他的还有很多值,有兴趣的可以自行查阅

    <tx:method name="*" propagation="REQUIRED"/>
    

    3.配置事务的切入

    <!--配置事务切入-->
    <aop:config>
        <aop:pointcut id="txPointCut" expression="execution(* com.tioxy.mapper.*.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
    </aop:config>
    

    这样就通过AOP,不修改源代码的基础上开启事务,其他方式可以参考mybatis-spring官方文档

    文章引用
    1.mybatis-spring官方文档:http://mybatis.org/spring/zh/transactions.html
    2.狂神说JAVA之Spring声明式事务:https://www.bilibili.com/video/BV1WE411d7Dv?p=27

  • 相关阅读:
    全面的学习资料(收藏)
    远程下载文件源码
    【转】c#托管资源和非托管资源区别
    Jquery 限制文本框输入字数
    好用的网站
    交叉表查询
    jquery 和 javascript 清空上传控件 方法总结
    关于java.io.IOException问题
    http 302
    django使用静态文件二
  • 原文地址:https://www.cnblogs.com/tioxy/p/13172933.html
Copyright © 2011-2022 走看看