zoukankan      html  css  js  c++  java
  • spring事务配置

    工作中不一定是每执行一条sql语句就进行提交,有可能是一批业务的操作,这一批sql语句,要么全部执行成功,要么全部执行失败。因此就需要用到事务来进行管理。

    在spring中,提供了对事务的管理类。

    首先需要在beans的配置文件上添加tx的命名空间和地址

    xmlns:tx="http://www.springframework.org/schema/tx"
    
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-4.3.xsd

    同时配置进行事务管理的数据源

        <bean id="transactionManager"
            class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource" />
        </bean>
        
        <tx:annotation-driven transaction-manager="transactionManager" />
        

    以上配置完成后,即可在程序的数据持久层进行事务管理。

    在想要进行事务控制的类或public方法上使用注解@Transactional

        @Override
        @Transactional
        public void insert(List<TPjXjypsq> list) {
            //TODO
        }

    如上,如果一个类中,类和方法都使用了该注解,以方法上的注解为优先。如果方法的修饰词不是public,虽然不会报错,但事务不会被管理。

    @Transactional中的属性

    propagation:可选的传播性设置,参数为枚举

    isolation:可选的隔离性设置,参数为枚举

    readOnly:可读性,参数为boolean

    timeout:超时时间,以s为单位,参数为int类型

    rollbackFor:遇见指定的异常则回滚,参数是class类型,且必须为Throwable子类,可以是一个参数rollbackFor=Exception.class或多个rollbackFor={a.class,b.class}。

    rollbackForClassname:遇见指定的异常的名称则回滚,参数是String,但必须是Throwable子类的名称。可以是一个参数或多个。

    noRollbackFor:遇见指定的异常则必须不回滚,参数同rollbackFor。

    noRollbackForClassname:遇见指定的异常的名称则必须不回滚,参数同rollbackForClassname。

    由于以上方式需要对每个进行事务管理的地方都增加注解@Transactional,因此可以使用aop配合,对多个类(方法)进行事务管理。

    注意事项

    1、@Transactional默认抛出异常为runableException类及下面子类,如果所抛出的类不属于该范围,例如抛出Exception类型的异常,则不会触发事务回滚。

    2、@Transactional只对public类型有效,其他类型虽然不会报错,但是均无效。

    3、@Transactional只对方法中抛出的异常触发回滚,如果异常在方法中已经被捕获和处理,则不会触发回滚。

  • 相关阅读:
    Spring IOC容器的初始化-(二)BeanDefinition的载入和解析
    Spring IOC容器的初始化—(一)Resource定位
    SpringMVC的启动过程
    Spring IOC容器在Web容器中是怎样启动的
    Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again 问题分析
    网络丢包分析
    yum安装jdk如何配置JAVA_HOME
    Linux网卡绑定
    Linux Buffer/Cache 的区别
    理解load averages
  • 原文地址:https://www.cnblogs.com/yxth/p/8489867.html
Copyright © 2011-2022 走看看