ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring的事务处理

2019-09-21 17:41:39  阅读:183  来源: 互联网

标签:www http Spring 事务 事务处理 springframework org schema


事务:一次对数据库的操作就叫做事务,应该符合数据库事务的ACID(原子性、一致性、隔离性、持久性)

一、注解方式

添加tx类标签

           

或者手动引入

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"  
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd
                        http://www.springframework.org/schema/tx 
                        http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">

在XML文件里配置事务管理器,及启动事务注解

	<!-- 导入外部的资源文件 -->
	<context:property-placeholder location="classpath:db.properties"/>
	<!-- 配置c3p0数据库连接池 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="user" value="${jdbc.user}"></property>
		<property name="password" value="${jdbc.password}"></property>
		<property name="driverClass" value="${jdbc.driverClass}"></property>
		<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
		
		<property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
		<property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
	</bean>
	<!-- 配置事务管理器 -->
	<bean id="transactionManager" 
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 配置属性,依赖于前面的dataSource数据源(c3p0) -->
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	
	<!-- 启用事务注解 -->
	<tx:annotation-driven transaction-manager="transactionManager"/>

在需要进行事务处理的方法前添加注解@Transactional
                     propagation: 指定事务的传播行为, 即当前的事务方法被另外一个事务方法调用时如何使用事务, 默认取值为                                                      REQUIRED, 即使用调用方法的事务 REQUIRES_NEW,即事务自己的事务, 调用的事务方法的事务被挂起. 
                     isolation:指定事务的隔离级别, 最常用的取值为 READ_COMMITTED,默认情况下 Spring 的声明式事务对

                                      所有的运行时异常进行回滚. 也可以通过对应的属性进行设置. 通常情况下去默认值即可. 
                      readOnly:指定事务是否为只读. 表示这个事务只读取数据但不更新数据, 这可以优化数据库引擎. 若真的事一个只                                           读取数据库值的方法, 应设置 readOnly=true
                      timeout :指定强制回滚之前事务可以占用的时间.  ,单位为秒 

       示例:

          @Transactional(propagation=Propagation.REQUIRES_NEW,
                 isolation=Isolation.READ_COMMITTED,
                 noRollbackFor={UserAccountException.class})
         @Transactional(propagation=Propagation.REQUIRES_NEW,
                 isolation=Isolation.READ_COMMITTED,
                  readOnly=false,
                 timeout=3) 

 

标签:www,http,Spring,事务,事务处理,springframework,org,schema
来源: https://blog.csdn.net/qq_38487155/article/details/89047438

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有