Spring框架学习day6--事务管理
Spring事务管理
Spring事务管理是在AOP的基础上,当我们的方法完全执行成功后,再提交事务,如果方法中有异常,就不提交事务
Spring中的事务管理有两种方式:
1.编程式事务
需要我们在业务代码中手动提交
2.声明式事务
分为:基于 xml 配置 基于注解实现
Spring 的 dao 框架,提供事物管理实现类是 DataSourceTransactionManager
配置事务管理器
<!-- 配置 spring 事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property>
</bean>
注解方式
<!-- 开启注解事务管理 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
在类或方法上使用@Transactional 标签即可.
Transactional 可以添加在类上,这样类中所有的方法都在事务管理中运行
也可以方法上,只有所添加方法的事务管理中运行
主要作用:如果对应事务发生异常,会终止提交事务
声明式事务不生效的场景
- @Transactional 应用在
- 非 public 修饰的方法上
- 异常被 catch 捕获导致失效
- 出现编译期异常
- 数据库引擎不支持事务
@Transactional(rollbackFor = Exception.class)// 事务注解 rollbackFor 指定出现异常时回滚
事务日志