Spring使用@Transactional注解实现事务
注解概述
是声明式事务管理编程中使用的注解
属性
属性 | 类型 | 描述 |
---|---|---|
value | String | 可选的限定描述符,指定使用的事务管理器 |
propagation | enum: Propagation | 可选的事务传播行为设置 |
isolation | enum: Isolation | 可选的事务隔离级别设置 |
readOnly | boolean | 读写或只读事务,默认读写 |
timeout | int (in seconds granularity) | 事务超时时间设置 |
rollbackFor | Class对象数组,必须继承自Throwable | 导致事务回滚的异常类数组 |
rollbackForClassName | 类名数组,必须继承自Throwable | 导致事务回滚的异常类名字数组 |
noRollbackFor | Class对象数组,必须继承自Throwable | 不会导致事务回滚的异常类数组 |
noRollbackForClassName | 类名数组,必须继承自Throwable | 不会导致事务回滚的异常类名字数组 |
用法
一般在要配置事务的public方法上使用,不要在接口或者接口方法上使用该注解(这是Spring的建议)
实现过程
引入依赖
1 | <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> |
配置Spring的事务处理
在Spring的配置文件声明事务管理器和配置基于注解的声明式事务
1 | <!--声明事务管理器--> |
配置事务的方法
下面方法的作用:添加学生信息,然后查找一个id为1000的学生,如果这个学生存在,添加学生就成功
出现事务回滚的情况:如果出现NullPointerException就会发生事务回滚,如果出现RuntimeException也会回滚
1 |
|
测试
序号 | 测试条件 | 结果 |
---|---|---|
1 | 数据库中不存在 id为1000的学生 |
报错,且添加学生不成功 |
2 | 数据库中存在 id为1000的学生 |
添加学生成功 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LeDao's Blog!
评论