• springboot 事务注解


    spring声明式事务管理默认对非检查型异常和运行时异常进行事务回滚,而对检查型异常则不进行回滚操作。

    1、异常

    1.1、检查型异常

    检查型异常(编译器要求必须处置的异常):正确的程序在运行中,很容易出现的、情理可容的异常状况。可查异常虽然是异常状况,但在一定程度上它的发生是可以预计的,而且一旦发生这种异常状况,就必须采取某种方式进行处理。
    除了RuntimeException(运行时异常)及其子类以外,其他的Exception类及其子类都属于检查型异常。这种异常的特点是Java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获它,要么用throws子句声明抛出它,否则编译不会通过,编译器一般会给出错误提示。

    例如:一个读取文件的方法代码逻辑没有错误,但程序运行时可能会因为文件找不到而抛出FileNotFoundException,如果不处理这些异常,程序将来肯定会出错。所以编译器会提示你要去捕获并处理这种可能发生的异常,不处理就不能通过编译。

    1.2、非检查型异常

    非检查型异常(Unchecked)是指编译器不会检查这类异常,不检查的则开发者在代码的编辑编译阶段就不是必须处理,这类异常一般可以避免,因此无需处理(try …catch)。如果不处理这类异常,集成开发环境中的编译器也不会给出错误提示。非检查型异常包括:运行时异常(RuntimeException与其子类)和错误(Error)。

    例如:你的程序逻辑本身有问题,比如数组越界、访问null对象,这种错误你自己是可以避免的。编译器不会强制你检查这种异常。

    1.3、运行时异常

    运行时异常都是RuntimeException类及其子类异常,如NullPointerException、IndexOutOfBoundsException等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

    当出现RuntimeException的时候,我们可以不处理。当出现这样的异常时,总是由虚拟机接管。比如:我们从来没有人去处理过NullPointerException异常,它就是运行时异常,并且这种异常还是最常见的异常之一。

    1.4、非运行时异常

    非运行时异常是RuntimeException以外的异常,类型上都属于Exception类及其子类。如IOException、SQLException等以及用户自定义的Exception异常。对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch并处理,否则程序就不能编译通过。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。

    参考地址:异常机制

    2、声明式事务

    在service层方法上添加Transactional注解,指定回滚异常类型

    //当出现Exception时,进行事务回滚
    @Transactional(rollbackFor = Exception.class)
    //当出现RunTimeException时,不进行事务回滚
    @Transactional(notRollbackFor=RunTimeException.class)
    
    • 1
    • 2
    • 3
    • 4

    提示:
    1、springboot项目并不需要@EnableTransactionManagement注解开启事务
    2、一般try catch都在controller层处理,service层进行回滚加上注解@Transactional(rollbackFor=Exception.class)即可,如果service正常执行,在controller层报错,则不会回滚

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    React如何优化减少组件间的重新Render
    Excel 函数大全应用,包含各类常用函数
    通知!7月SCI/SSCI/EI目录已更新,大批中科院1-4区好刊,请查收!
    手写map,filter函数
    2024年成都市“蓉贝”软件人才年度评估及资金支持申报对象内容、材料要求
    链表常见面试题分析
    Java中 this 和 super 的用法与区别
    Android实现富文本展示
    ARM作业2
    00后程序员摸爬滚打近一年,为学弟学妹们总结出了以下 7 条人生建议(建议收藏)
  • 原文地址:https://blog.csdn.net/segegefe/article/details/126114240