Spring中事务的配置:
<!-- 事务 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 开始事务注解 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- 事务作用方法 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
<tx:method name="query*" propagation="SUPPORTS" read-only="true" />
<tx:method name="*" propagation="REQUIRED" rollback-for="Exception" />
</tx:attributes>
</tx:advice>
<!-- 事务作用service层 -->
<aop:config proxy-target-class="true">
<aop:pointcut id="allTestServiceMethod" expression="execution(* com.ymkj.bxld.service.*.*(..))" />
<aop:advisor pointcut-ref="allTestServiceMethod" advice-ref="txAdvice" />
</aop:config>
注意的点:以上事务配置只有运行时的异常(RuntimeException)才是回滚,如果要想非运行时异常也回滚,再想要回滚的方法之前添加如下配置:
@Transactional(rollbackFor={Exception.class})