事务配置

方法一:


<bean id="pooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

<property name="driverClass" value="${jdbc.driverClass}" />

<property name="jdbcUrl" value="${jdbc.jdbcUrl}" />

<property name="user" value="${jdbc.user}" />

<property name="password" value="${jdbc.password}" />

<property name="maxPoolSize" value="30" />

<property name="minPoolSize" value="10" />

<!-- 关闭连接不自动commit -->

<property name="autoCommitOnClose" value="false" />

<!-- 连接超时时间 -->

<property name="checkoutTimeout" value="10000" />

<!-- 连接失败重试次数 -->

<property name="acquireRetryAttempts" value="2" />

</bean>

<bean id="transactionManager"

class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

<property name="dataSource" ref="pooledDataSource" />

</bean>

<!-- 配置基于注解的声明式事务,默认使用注解来管理事务行为 -->

<tx:annotation-driven transaction-manager="transactionManager" mode="proxy"

proxy-target-class="false"/>


方法二:

<bean id="pooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

<property name="driverClass" value="${jdbc.driverClass}" />

<property name="jdbcUrl" value="${jdbc.jdbcUrl}" />

<property name="user" value="${jdbc.user}" />

<property name="password" value="${jdbc.password}" />

<property name="maxPoolSize" value="30" />

<property name="minPoolSize" value="10" />

<!-- 关闭连接不自动commit -->

<property name="autoCommitOnClose" value="false" />

<!-- 连接超时时间 -->

<property name="checkoutTimeout" value="10000" />

<!-- 连接失败重试次数 -->

<property name="acquireRetryAttempts" value="2" />

</bean>

<bean id="transactionManager"

class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

<property name="dataSource" ref="pooledDataSource" />

</bean>

<tx:advice id="txAdvice" transaction-manager="transactionManager">

<tx:attributes>

<!--定义查询方法都是只读的 -->

<tx:method name="query*" read-only="true" />

<tx:method name="find*" read-only="true" />

<tx:method name="get*" read-only="true" />

<!-- 主库执行操作,事务传播行为定义为默认行为 -->

<tx:method name="save*" propagation="REQUIRED"  />

<tx:method name="update*" propagation="REQUIRED" />

<tx:method name="delete*" propagation="REQUIRED" />

<!--其他方法使用默认事务策略 -->

<tx:method name="*" />

</tx:attributes>

</tx:advice>

<aop:config>

<!-- 定义切面,所有的service的所有方法 -->

<aop:pointcut id="txPointcut"

            expression="execution(* com.json.web.service.impl.*.*(..))" />

<!-- 应用事务策略到Service切面 -->

<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>

</aop:config>



©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • spring支持编程式事务管理和声明式事务管理两种方式 编程式事务:使用TransactionTemplate或者...
    LynnGuo阅读 320评论 1 1
  • 一.声明式事务实现 将编程式事务章节中applicationContext.xml修改下: 声明式事务通过AOP代...
    zlb阅读 1,038评论 0 1
  • aop配置和事务的配置 环境 jdk1.7 tomcat7.0 spring3.1.1 hibernate4.1....
    playman阅读 1,398评论 0 2
  • 基于XML的事务配置 beans.xml中AOP的配置: 【说明】(1)<tx> 命名空间用于配置声明式事务。得益...
    不知名的蛋挞阅读 3,192评论 0 0
  • 什么是事务? 事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中...
    青青子衿zq阅读 8,175评论 0 2

友情链接更多精彩内容