Spring事务管理
来源:互联网 发布:淘宝改一口价会降权吗 编辑:程序博客网 时间:2024/06/10 20:18
(一)
编程式事务管理(少用,缺点:代码侵入事务层,改编代码结构)
实现方式:
把需要进行事务管理的方法放到指定方法中,例如:
public void transferAccount(double money, int userA, int userB) {
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus arg0) {
//需要进行事务管理的两个方法
bankDao.outMoney(money, userA);
bankDao.inMoney(money, userB);
}
});
}
(二)
声明式事务管理
实现方式:配置XML文件,再执行方法时,运用AOP切入事务通知
配置如下:
<!-- 这里运用的是jdbc的事务管理器 必须先配置jdbc的数据源-->
1.配置jdbc数据源
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<context:property-placeholder location="jdbc.properties"/>
2.配置jdbc事务管理器
<!-- jdbc事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
3.配置事务通知
<!-- 配置事务通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
4.配置切面(在执行com.czp.service包下的方法前,通知执行事务管理)
<!-- 配置事务的切面 -->
<aop:config>
<aop:pointcut expression="execution(* com.czp.service.*.*(..))" id="serviceMethod"/>
<!-- 配置事务通知 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod"/>
</aop:config>
(三)
使用注解配置声明式事务管理
实现方式:在需要事务管理的事务类添加注解
@Transactional
XML必须配置
<tx:annotation-driven transaction-manager="transactionManager"/>
阅读全文
0 0
- 事务管理之Spring事务管理
- Spring事务管理
- spring事务管理
- Spring事务管理
- Spring事务管理
- Spring事务管理
- Spring事务管理
- Spring事务管理
- Spring 事务管理
- Spring事务管理
- spring 事务管理
- spring 事务管理
- spring 事务管理
- spring事务管理
- Spring 事务管理
- Spring事务管理
- spring事务管理
- spring 事务管理
- 浅谈BI领域的数据模型设计(一)
- html中a标签下href链接值href="#"与href="javascript:void(0)"的不同
- LeetCode-35:Search Insert Position(寻找或插入位置)
- ARP解析
- 调试
- Spring事务管理
- 浅谈BI领域的数据模型设计(二)
- 洛谷P1558 色板游戏
- 并发编程(三)-线程协作
- 示波器的交流耦合与直流耦合
- Thymeleaf虚拟购物商店【二】
- 解决移动端rem加载瞬间页面错乱的方法(放大或者缩小)
- 使用Toolbar添加左边图标的时候,出现一段距离
- HashMap源码剖析