`
1154934572
  • 浏览: 65307 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

Spring、Ibatis的事物框架配置

阅读更多

1、在做事物控制前,先检查所用的包是否已经加载进来
   aspectjrt-1.5.4.jar    aspectjweaver-1.6.2.jar  cglib-nodep-2.1_3-osgi.jar
2、在Spring配置数据源的配置文件中加入如下配置

    <!-- 数据库连接配置 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>       
        <property name="username" value="QHUSER"></property>
        <property name="password" value="oracle"></property>
        <property name="initialSize" value="5" />
        <property name="maxActive" value="20" />
        <property name="maxIdle" value="30" />
        <property name="maxWait" value="1000" />
        <property name="poolPreparedStatements" value="false" />
        <!--property name="maxOpenPreparedStatements" value="3" /-->
        <property name="testOnBorrow" value="true"/>
        <property name="validationQuery" value="select * from dual"/>
        <property name="defaultAutoCommit" value="true" />
    </bean>

    <!--配置事务管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
   
    <!--配置哪些方法,什么情况下需要回滚-->
    <tx:advice id="serviceAdvice" transaction-manager="transactionManager"> 
        <tx:attributes>  
            <!--当代理的service层中的方法抛出异常的时候才回滚,必须加rollback-for参数-->
            <tx:method name="add*" propagation="REQUIRED" rollback-for="Throwable"/>
            <tx:method name="del*" propagation="REQUIRED" rollback-for="Throwable"/> 
            <tx:method name="update*" propagation="REQUIRED" rollback-for="Throwable"/> 
            <tx:method name="create*" propagation="REQUIRED" rollback-for="Throwable"/> 
            <!--除了上面标识的方法,其他方法全是只读方法-->
            <tx:method name="*" read-only="true"/> 
        </tx:attributes> 
    </tx:advice>  
   
    <!-- 配置系统中哪些方法中启用事物控制 -->
   
    <aop:config> 
        <aop:pointcut id="servicePointcut" expression="execution(* com.vip.core.service..*.*(..))"/> 
        <aop:advisor pointcut-ref="servicePointcut" advice-ref="serviceAdvice"/>
    </aop:config>

    expression="execution(* *..*Service.*(..))"
    第一个* 表示任意返回值类型
    第二个* 表示以任意名字开头的package. 如 com.xx.
    第三个* 表示以任意名字开头的class的类名 如TestService
    第四个* 表示 通配 *service下的任意class
    最后二个.. 表示通配 方法可以有0个或多个参数

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics