springmvc基于注解事物配置详解

来源:互联网 发布:java spring 切面编程 编辑:程序博客网 时间:2024/05/22 13:39

一、首先spring的事物的默认作用范围,哪些是checked异常,哪些又是unckecked

其中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();

0 0
原创粉丝点击