0
点赞
收藏
分享

微信扫一扫

Spring使用@Transactional注解实现事务

千妈小语 2022-03-31 阅读 54
spring

注解概述

是声明式事务管理编程中使用的注解

属性

属性类型描述
valueString可选的限定描述符,指定使用的事务管理器
propagationenum: Propagation可选的事务传播行为设置
isolationenum: Isolation可选的事务隔离级别设置
readOnlyboolean读写或只读事务,默认读写
timeoutint (in seconds granularity)事务超时时间设置
rollbackForClass对象数组,必须继承自Throwable导致事务回滚的异常类数组
rollbackForClassName类名数组,必须继承自Throwable导致事务回滚的异常类名字数组
noRollbackForClass对象数组,必须继承自Throwable不会导致事务回滚的异常类数组
noRollbackForClassName类名数组,必须继承自Throwable不会导致事务回滚的异常类名字数组

用法

一般在要配置事务的public方法上使用,不要在接口或者接口方法上使用该注解(这是Spring的建议)

实现过程

引入依赖

<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.15</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.3.15</version>
</dependency>

配置Spring的事务处理

在Spring的配置文件声明事务管理器和配置基于注解的声明式事务

<!--声明事务管理器-->
<bean id="transactionManager"
      class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <!-- 注入数据库连接池 -->
    <property name="dataSource" ref="dataSource"/>
</bean>
<!--配置基于注解的声明式事务 -->
<tx:annotation-driven transaction-manager="transactionManager"/>

配置事务的方法

下面方法的作用:添加学生信息,然后查找一个id为1000的学生,如果这个学生存在,添加学生就成功

出现事务回滚的情况:如果出现NullPointerException就会发生事务回滚,如果出现RuntimeException也会回滚

@ResponseBody
@Transactional(rollbackFor = {NullPointerException.class})
@RequestMapping(value = "/test", produces = {"text/plain;charset=utf-8", "text/html;charset=utf-8"})
public String test() {
    Student student = new Student();
    student.setName("小明");
    student.setAge(10);
    //添加学生信息到数据库
    studentService.add(student);
    //在数据库中查找id为1000的学生,如果这个学生存在,上面的添加操作就成功
    Student student1 = studentService.findById(1000);
    System.out.println(student1.getId());
    return "测试";
}

测试

序号测试条件结果
1数据库中不存在id为1000的学生报错,且添加学生不成功
2数据库中存在id为1000的学生添加学生成功
举报

相关推荐

0 条评论