采用Spring注解方式, 实现事务

12 篇文章 0 订阅

一、前提

spring配置文件分为两个:web容器配置文件和逻辑容器配置文件

逻辑容器配置文件包含了如下配置:

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

二、使用注解 @Transactional实现事务的注意点

1、请确认事务与逻辑注解扫描在同一个容器里,这样才能保证事务的正常开启。(例如:误将注解都扫描在web容器,但是web容器没有配置事务,事务是配置在逻辑容器里,这样导致事务没有开启)。

修改前:

    <context:component-scan base-package=“com.hcb.confirmation”/>

修改后:

    <context:component-scan base-package="com.hcb.confirmation">

        <context:exclude-filter type="annotation" expression="javax.inject.Named"/>

    </context:component-scan>

2、是否回滚规则如下: 

默认遇到throw new RuntimeException("...");会回滚 
需要捕获的throw new Exception("...");不会回滚
 

如果Exception也需要回滚,那么这样声明注解:@Transactional(rollbackFor=Exception.class)

3、如果用mysql数据库,Engine需要设置为InnoDB格式,自动建表的格式为:MyISAM,这中格式的是不支持事务管理的。

show engines;

show variables like '%storage_engine%';

show create table tablename;

4、与声明式的事务不同,注解方式不需要引用aspectj的jar

参考文章:http://www.th7.cn/Program/java/201208/88393.shtml


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值