Spring-声明式事物
声明式事物
1、回顾事物
- 把一组业务当成一个业务来做:要么都成功,要么都失败
- 事物在项目开发中,十分的重要,涉及到数据的一致性问题,不能马虎!
- 确保完整性和一致性
事物的ACID原则:
- 原子性
- 一致性
- 隔离性
- 多个业务可能操作同一个资源,防止数据损坏
- 持久性
- 事物一旦提交,无论系统发生什么问题,结果都不会再被影响,被持久化的写到存储器中
2、spring中的事物管理
- 声明式事物:AOP
- 编程式事物:需要在代码中,进行事物的管理
-
配置声明式事物
<!--配置声明式事物--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <constructor-arg ref="dataSource"/> </bean> -
结合AOP实现事物的织入
-
配置事物通知
<!--配置事物通知--> <!--需要先导入tx约束--> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <!--给哪些方法配置事物--> <!--配置事物的传播特性--> <tx:attributes> <tx:method name="add" propagation="REQUIRED"/> <tx:method name="delete" propagation="REQUIRED"/> <tx:method name="update" propagation="REQUIRED"/> <tx:method name="query" read-only="true"/> <tx:method name="*" propagation="REQUIRED"/> </tx:attributes> </tx:advice> -
配置事物切入
<!--配置事物切入--> <aop:config> <aop:pointcut id="txPoint" expression="execution(* com.kuang.mapper.*.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint"/> </aop:config>
-
思考:
为什么需要事物?
- 如果不配置事物,可能存在数据提交不一致的情况
- 如果我们不在Spring中去配置声明式事物,我们就需要在代码中手动配置事物
- 事物在项目开发中十分重要,涉及到数据的一致性和完整性问题,不容马虎

浙公网安备 33010602011771号