方式一:XML注解实现
<!-- 使用Spring自带的声明式事务管理-->
<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--声明式事务配置-->
<tx:advice id="advice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 声明式事务可以使用*匹配任意字符,目标方法只需要添加方法名
程序service层中的方法名必须提前设定好
name:需要添加事务管理的方法名
rollback-for:发生异常时抛出的异常对象-->
<tx:method name="add*" rollback-for="Exception"/>
<tx:method name="insert*" rollback-for="Exception"/>
<tx:method name="update*" rollback-for="Exception"/>
<tx:method name="edit*" rollback-for="Exception"/>
<tx:method name="delete*" rollback-for="Exception"/>
<tx:method name="tran*" rollback-for="Exception"/>
<!-- 其他方法不使用事务管理(只读)-->
<tx:method name="*" read-only="true"></tx:method>
</tx:attributes>
</tx:advice>
<!-- 使用AOP进行绑定-->
<aop:config>
<!-- 目标方法位置-->
<aop:pointcut id="targetMethod" expression="execution(* service..*.*(..))"/>
<!-- 绑定-->
<aop:advisor advice-ref="advice" pointcut-ref="targetMethod"></aop:advisor>
</aop:config>
方式二:注解实现
<!-- 使用Spring自带的声明式事务管理-->
<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 注解方式,声明式事务的注解驱动扫描-->
<tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
在目标方法上加注解@Transactional即可