Spring 10 事务管理

对AOP的应用

1 事务管理API
主要用到两个接口:事务管理器接口,事务定义接口
(1)PlatFormTransaction事务管理器接口
用于完成事务的提交,回滚及获取事务的状态信息
API文档:Spring框架解压目录下的docs/javadoc-api/index.html

该接口常用的两个实现类
DataSourceTransactionManager:使用JDBC或iBatis进行持久化数据时使用
HibernateTransactionManager:使用Hibernate进行持久化数据时使用

Spring的回滚方式
发生运行时异常回滚,发生受查异常提交。但受查异常可手动设置。

(2)TransactionDefinition事务定义接口
定义了事务描述相关的三类常量:事务隔离级别,事务传播行为,事务默认超时时限,及对他们的操作。

2 使用事务代理工厂管理事务

(1) 导入jar
aop联盟和Spring对aop实现的jar包

(2) 事务配置
注册事务管理器(注册实现类)
DataSourceTransactionManager
(3)生成事务代理
抛出异常JVM能知道,为红色,捕获异常JVM不知道,调试为绿色

相当于将service里的一个方法作为事务,该方法调dao层进行多表操作,保证对这些表的操作同时成功或失败

<bean id="serviceProxy" class="...TransactionProxyFactoryBean">
	<property name="transactionManager" ref="事务管理器"/>(相当于切面)
	<property name="target" ref="service"/>
	<property name="transactionAttributes">
			<props>//集合属性
				<prop key="事务内的所有方法">事务隔离级别ISOLATION_DEFAULT,传播行为PROPAGATION_REQUIRED,-自定义的异常</prop>//把多个方法绑定在一个事务中,相当于将Service里的一个方法作为整体
				...其他事务
			</props>
	</property>
</bean>

-异常回滚,+异常提交

3使用Spring事务注解管理事务

(1)注册事务管理器(注册实现类)
(2)增加事务约束
(3)配置

<tx:annotation-driven transaction-manager="事务管理器"/>

(4)在service事务方法上加注解

@Transaction(isolation=Isolation,propagation=Propagation.REQUIRED)
//指定发生哪个异常时回滚
@Transaction(isolation=Isolation,propagation=Propagation.REQUIRED,rollbackFor=StockException.class)

4 使用AspectJ的AOP配置管理事务(重点)

(1)导jar
(2)配置

事务通知
<tx:advice id="txAdvice" transaction-manager="事务管理器">
	<tx:attributes>
		<!-- 指定在连接点方法上应用的事务属性 -->
		<tx:method name="service方法" isolation=“”/>
	</tx:attributes>
</tx:advice>
aop配置
<aop:config>
	<!-- 指定切入点 -->
	<aop:pointcut expression="execution(* *..service.*.*(..))" id="pointcut"/>   //service下类的所有方法
	<aop:advisor advice-ref="txAdvice" point-ref="pointcut"/>
</aop:config>
配expression决定连接点是否可作为切入点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值