首页 > 其他分享 >spring的事务注解详解

spring的事务注解详解

时间:2023-08-02 10:32:15浏览次数:47  
标签:事务管理 事务 Spring Transactional 详解 spring 注解 public

Spring是一个流行的开发框架,它提供了很多功能和特性,其中包括事务管理。事务管理是在应用程序中执行一系列操作时,确保数据的一致性和完整性的关键方面之一。

Spring框架提供了多种方式来管理事务,其中最常用的方式是使用注解。通过在方法或类级别上添加特定的注解,可以将相关的方法或类标记为事务性,从而实现自动事务管理。

在Spring中,常用的事务注解有如下几个:

  1. @Transactional:这个注解可以添加在类或者方法上,用于指示该类或方法需要进行事务管理。当该注解添加在类级别上时,表示该类中的所有方法都被标记为事务性。当添加在方法级别上时,表示只有该方法被标记为事务性。此注解可用于修饰Service层或DAO层的方法。

示例用法:

@Service
@Transactional
public class UserServiceImpl implements UserService {

    @Override
    public void saveUser(User user) {
        // 保存用户逻辑
    }

    @Override
    @Transactional(readOnly = true)
    public User getUserById(Long userId) {
        // 查询用户逻辑
    }
}
  1. @Transactional(propagation):该注解用于指定事务传播行为。事务传播行为定义了当方法调用其他方法时,事务应该如何传播。Spring提供了多种传播行为选项,包括REQUIRED(默认值)、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER和NESTED。

示例用法:

@Transactional(propagation = Propagation.REQUIRED)
public void methodA() {
    // 事务A
    methodB();
}

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodB() {
    // 事务B
}
  1. @Transactional(isolation):该注解用于指定事务的隔离级别。事务隔离级别定义了多个并发事务之间的相互影响程度。Spring支持多个隔离级别,包括DEFAULT、READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ和SERIALIZABLE。

示例用法:

@Transactional(isolation = Isolation.READ_COMMITTED)
public void updateUser(User user) {
    // 更新用户逻辑
}
  1. @Transactional(rollbackFor):该注解用于指定在哪些异常情况下事务应该回滚。可以指定多个异常类或者异常类的父类。

示例用法:

@Transactional(rollbackFor = {SQLException.class, IllegalArgumentException.class})
public void deleteUser(Long userId) {
    // 删除用户逻辑
}

除了上述常用的事务注解外,Spring还提供了其他一些注解用于更精细地控制事务,如@TransactionManagement、@TransactionAttribute、@TransactionTimeout等。

总结: 事务管理在应用程序中至关重要,而Spring框架提供了方便的注解来管理事务。通过使用Spring的事务注解,我们可以更加简洁和灵活地定义和控制事务。本文介绍了Spring事务注解的常用用法,并给出了示例代码。希望这些信息对你的学习和使用Spring事务管理起到帮助作用。

标签:事务管理,事务,Spring,Transactional,详解,spring,注解,public
From: https://blog.51cto.com/u_16065115/6934275

相关文章

  • linux /sys/class/dmi/id目录详解
    /sys/class/dmi/id是一个linux系统的目录,用于存储有关计算机硬件的DMI(desktopmanagementinterface)信息。DMI是一种由系统固件提供的标准接口,收集和报告有关计算机硬件配置的信息/sys/class/dmi/id目录下,可以找到以下文件和子目录bios_date:存储计算机的BIOS固件版本的发布日......
  • springboot和springcloud区别
    springboot和springcloud区别有:1、含义不同;2、作用不同;3、使用方式不同;4、特征不同;5、注释不同;6、优势不同;7、组件不同;8、设计目的不同。其中,含义不同指的是springboot是一个快速开发框架,而SpringCloud是建立在SpringBoot上的服务框架。1、含义不同springboot:一个快速开发框架......
  • PHPHook框架详解 实现代码注入和拦截的利器
    PHPHook框架详解实现代码注入和拦截的利器PHPHook框架是一种具有强大功能的代码注入和拦截工具,它被广泛应用于各种Web开发中。本文将为大家详细介绍PHPHook框架的实现原理,以及如何利用该框架实现代码注入和拦截。PHPHook框架详解实现代码注入和拦截的利器一、PHPHook框架简介......
  • 6小时快速入门Java微服务架构Spring Boot
    springboot快速入门配置文件例如修改tomcat启动端口号:application.properties:server.port=8080<!--注意yml文件数据值前面必须有空格-->application.yml:server:port:8080配置文件优先级:.properties>.yml>.yamlYAML:基本语法大小写敏感数据......
  • Spring框架你了解多少?
    Spring框架是当前Java领域应用最广的框架,它之所以那么成功,这主要是得益于它的设计理念。它的理念包括IoC(InversionofControl,控制反转)和AOP(AspectOrientedProgramming,面向切面编程)。下面我们就来一起学习下Spring这个优秀的开源框架。什么是Spring?Spring是分层......
  • springCloud
    传统项目转型存在的问题·代码耦合,开发维护困难·无法针对不同模块进行针对性优化·无法水平扩展·单点容错率低,并发能力差垂直拆分当访问量逐渐增大,单一应用无法满足需求,此时为了应对更高的并发和业务需求,我们根据业务功能对系统进行拆分:优点·系统拆分实现了流......
  • SpringBoot 打jar包后下载static文件夹下的文件
    前端:后端:@RequestMapping(value={"downloadFile"})publicvoiddownloadFile(HttpServletResponseresponse){InputStreaminputStream=null;OutputStreamoutputStream=null;fileName="aaa.pdf";try{//直接获取流inputStream=FileUtil.cl......
  • SpringBoot + Redis 执行lua脚本
    1、背景有时候,我们需要一次性操作多个Redis命令,但是这样的多个操作不具备原子性,而且Redis的事务也不够强大,不支持事务的回滚,还无法实现命令之间的逻辑关系计算。所以,一般在开发中,我们会利用lua脚本来实现Redis的事务。2、lua脚本Redis中使用lua脚本,我们需要注意......
  • SpringDataJpa对拿到的对象进行set,但是不save,数据库也能自动更新,由于使用了注解 @Tran
    SpringDataJpa对拿到的对象进行set,但是不save,数据库也能自动更新,由于使用了注解@Transactional事务进行处理原文链接:https://blog.csdn.net/qq_19903753/article/details/103367252SpringDataJpa对拿到的对象进行set,但是不save,数据库也能自动更新概述今天在进行coderev......
  • 留存测试数据,Apipost接口用例详解
    接口用例可以在不影响源接口数据的情况下对接口添加多个用例,方便测试并保存测试数据。创建用例左侧目录选择接口后进入接口用例页面,点击添加用例  在弹出窗口中修改各种参数。如登录接口,可修改用户名为空,并添加断言。  执行用例点击确定后生成一条测试用例,点击执行......