首页 > 其他分享 >@Transactional 注解使用说明

@Transactional 注解使用说明

时间:2024-09-05 22:24:41浏览次数:4  
标签:事务 Spring Transactional 说明 注解 方法 public

@Transactional 注解是 Spring 框架中用于声明式事务管理的一个关键特性。通过使用这个注解,可以在不编写额外代码的情况下,管理数据库操作的事务边界。@Transactional 可以被应用到类级别或方法级别上,用于指定哪些方法在执行时需要被事务支持。

基本使用

  1. 添加依赖: 确保项目中包含了 Spring Transaction Management 的依赖。对于 Maven 项目,需要在 pom.xml 文件中添加如下依赖(版本可能根据 Spring 版本而有所不同):
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-transaction-manager</artifactId>
</dependency>


  1. 使用 @Transactional 注解
  • 方法级别: 将 @Transactional 注解应用于一个服务层的方法上,表示该方法的执行将在一个事务的上下文中进行。
@Service
public class SomeService {

    @Transactional
    public void someBusinessMethod() {
        // 数据库操作
    }
}
  • 类级别: 当将 @Transactional 注解应用于类级别时,该类中的所有公共方法都将被视为事务性的,除非它们被 @Transactional(propagation = Propagation.NOT_SUPPORTED) 等明确标注为非事务性的。
@Service
@Transactional
public class AnotherService {

    public void anotherBusinessMethod() {
        // 数据库操作
    }

    @Transactional(propagation = Propagation.NOT_SUPPORTED)
    public void nonTransactionalMethod() {
        // 非事务性操作
    }
}

事务属性

@Transactional 注解支持多个属性,用于定制事务的行为:

  • propagation:定义事务的传播行为。例如,Propagation.REQUIRED 表示当前方法必须运行在事务中,如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。
  • isolation:定义事务的隔离级别。例如,Isolation.DEFAULT 表示使用底层数据库的默认隔离级别。
  • timeout:定义事务的超时时间,单位为秒。默认值为 -1,表示没有超时限制。
  • readOnly:标记事务是否为只读事务。只读事务有助于某些数据库进行优化。
  • rollbackFor:指定哪些异常必须导致事务回滚。默认情况下,运行时异常和错误会导致事务回滚。
  • noRollbackFor:指定哪些异常不应该导致事务回滚。

注意事项

  • @Transactional 注解仅在由 Spring 容器管理的 bean 上有效。如果直接在 main 方法中或者非 Spring 管理的类中调用这些方法,事务管理将不会生效。
  • @Transactional 注解不应该用于接口定义上,因为注解不能继承到实现类中。应该直接将它应用于具体的类或者方法上。
  • 在使用 @Transactional 时,要注意异常的处理,确保方法在遇到预期之外的异常时能够正确地回滚事务。
  • 确保数据源配置了事务管理器,并且 Spring 配置正确以支持事务管理。

@Transactional 注解使用说明_事务管理

标签:事务,Spring,Transactional,说明,注解,方法,public
From: https://blog.51cto.com/u_15266301/11930662

相关文章

  • linux自带的crontab调度配置说明
    linux自带的crontab调度配置说明一.crontab命令概念:crontab命令用于设置周期性被执行的命令二.crontab帮助:crontab--helpUsage:crontab[options]filecrontab[options]crontab-n[hostname]Options:-u<user>defineuser-eedituser's......
  • Python 版本管理工具选择与 Pyenv 使用说明
    Python版本管理工具的主要作用是帮助开发者在同一台机器上管理多个Python版本和环境。这对于开发和部署不同项目非常有用,因为不同项目可能依赖不同的Python版本或者不同的包版本。具体来说,Python版本管理工具应有以下功能:(1)避免依赖冲突,不同的项目可能依赖不同版本的库,使用......
  • 大模型备案重难点最详细说明【评估测试题+附件】
    2024年3月1日,我国通过了《生成式人工智能服务安全基本要求》(以下简称《AIGC安全要求》),这是目前我国第一部有关AIGC服务安全性方面的技术性指导文件,对语料安全、模型安全、安全措施、词库/题库要求、安全评估等方面提出了具体规范和要求。(一)适用主体《AIGC安全要求》的适用主......
  • 企业财报分析及每股收益预测系统使用说明书
      企业财报分析及每股收益预测系统v1.0用户手册         2024年8月17日      系统目录 系统简介系统概述核心功能用户界面应用场景安装与配置发布与安装操作系统兼容性硬件配置要求网络环境系统界面介绍主界面概览财报分析......
  • 基于Java中的SSM框架实现校园门户网管理系统项目【项目源码+论文说明】
    基于Java中的SSM框架实现校园门户网管理系统演示摘要随着我国高校信息化建设内容的不断完善,很多高校都通过建立校园门户网站的方式搭建起高校与社会之间信息传递的桥梁,通过校园网站的建立来拓宽校园信息传播的渠道,利用全方位的校园环境及师资力量的介绍来吸引更多的学子,同......
  • 基于Java中的SSM框架实现私人书店管理系统项目【项目源码+论文说明】
    基于java中的SSM框架实现私人书店管理系统平台演示【内附项目源码+LW说明】摘要电子商务在近些年来已经成为了我国重要的第三产业之一,电子商务成为了我国经济增速中一个不可缺少的组成部分,而随着互联网技术的不断发展,现在的电子商务也已经日趋成熟,不仅仅是在技术层面实现......
  • 人脸静态活体检测(高精度版) API 对接说明
    人脸静态活体检测(高精度版)API对接说明本文将介绍人脸静态活体检测(高精度版)API对接说明,它可用于对用户上传的静态图片进行防翻拍活体检测,以判断是否是翻拍图片。接下来介绍下人脸静态活体检测(高精度版)API的对接说明。申请流程要使用API,需要先到人脸静态活体检测(......
  • (12)非阻塞赋值与阻塞赋值区别(以简单例子说明)
    二者定义在夏语闻老师《verilog数字系统设计教程》中对二者给出如下定义:非阻塞赋值(b<=a):所赋的变量值不能立刻为下面语句所用,块结束才能完成赋值操作,且所赋变量值是上一次赋值得到的阻塞赋值(b=a):赋值语句执行完后块才能结束,b的值在赋值语句执行完后立刻改变一般在时序逻辑中......
  • Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
    文章目录一、字节码文件1.1以正确的方式打开文件1.2字节码文件的组成1.2.1基础信息1.2.2常量池1.2.3方法1.3字节码常用工具1.4总结二、Java注解2.1什么是Java注解2.2注释和注解Annotation的区别(掌握)2.3如何使用注解(掌握)2.4Java中已经存在的注解(掌握)2.5自定义注解(了解)2.......
  • RabbitMQ使用说明
    一、前言本文基于作者对RabbitMQ使用的经验积累进行阶段性总结,希望没有使用经验的开发人员,看完本文可以直接上手。1、RabbitMQ核心概念Server:又称Broker,rabbitmq-server,一般指服务器运行的服务。Connection:是客户端与RabbitMQ服务器之间的通信通道,用于发送和接收消息。C......