springmvc基于注解事物配置详解
2016-05-18 19:03
561 查看
一、首先spring的事物的默认作用范围,哪些是checked异常,哪些又是unckecked
其中RunTimeException是属于unckecked,其余剩下的都是checked的;Spring事物的默认对unchecked才有效;
二、关于事物的配置
注意:1.在applicationConnext中(web容器上下文)配置时可排除controller的注入,mvc-servlet中不扫描注入service,避免service的重复注入;
2.sqlSessionFactory的数据源需要和事物的数据源保持一致,否则事物无效;
三、如何设置捕获checked异常,启用事物;
1.@Transactional(value="gtrust",rollbackFor=Exception.class)
2.或者手动捕获异常抛出RunTimeException异常,或者强制回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
其中RunTimeException是属于unckecked,其余剩下的都是checked的;Spring事物的默认对unchecked才有效;
二、关于事物的配置
<context:annotation-config /> <context:component-scan base-package="cn.com.ocj.web"> <context:exclude-filter type ="annotation" expression= "org.springframework.stereotype.Controller" /> </context:component-scan > <bean id="sqlMonitor_Gtrust" class="com.p6spy.engine.spy.P6DataSource"> <constructor-arg ref="dataSource2" /> </bean> <!-- gtrust data source configuration --> <bean id="sqlSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="configLocation" value="classpath:mybatis/mybatis_gtrust.xml"></property> <property name="dataSource" ref="dataSource2" /> <!-- sql打印 <property name="dataSource" ref="sqlMonitor_Gtrust" /> --> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="sqlSessionFactory" ref="sqlSessionFactory2" /> <property name="basePackage" value="cn.com.ocj.web.**.dao"></property> </bean> <bean id="transactionManager_Gtrust" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="sqlMonitor_Gtrust" /> <qualifier value="gtrust" /> </bean> <bean name="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <property name="traversableResolver"> <bean class="cn.com.ocj.web.common.ExtTraversableResolver"></bean> </property> </bean> <tx:annotation-driven transaction-manager="transactionManager_Gtrust"/>
注意:1.在applicationConnext中(web容器上下文)配置时可排除controller的注入,mvc-servlet中不扫描注入service,避免service的重复注入;
2.sqlSessionFactory的数据源需要和事物的数据源保持一致,否则事物无效;
三、如何设置捕获checked异常,启用事物;
1.@Transactional(value="gtrust",rollbackFor=Exception.class)
2.或者手动捕获异常抛出RunTimeException异常,或者强制回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
相关文章推荐
- eclipse下运行自定义maven命令
- SpringMVC原理
- java Cookie 设置和读取
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
- Email发送器 JavaMail实例
- java的zip库使用注意事项
- java 设计模式
- JAVA实现的一个简单的死锁(附解释)
- Java本地时间与GMT时间的转换
- Imei 生成-java版
- java学习作为一名java初学者,如何快速学习java?
- 华信JAVA培训——第一阶段总结
- Java中的JIT机制对运行速度的优化
- java中的this
- java 随机数高效生成
- 不惑JAVA之JAVA基础 - Concurrent 概述
- java 随机数高效生成
- Java环境搭建之JDK环境变量配置
- eclipse 安装properties 编辑器:eclipse jboss tools properties editor
- mac os x x64安装java7以及卸载的方法