Spring-@Transactional使用

本文主要介绍了Spring中@Transactional注解的使用,包括事务的四大基本要素、注解的作用位置、使用注意事项以及propagation和isolation属性的探讨,旨在帮助理解Spring事务管理。
摘要由CSDN通过智能技术生成

一、事务
1、简单简介: 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。
2、基本要素:原子性、一致性、隔离性、持久性

二、@Transactional
1、@Transactional注解可以作用于接口、接口方法、类以及类方法上
不建议在类上使用,因为作用于类上时,该类的所有public方法将都具有该类型的事务属性,不仅影响性能,而且每个方法可能需要不同的属性
不建议在接口或者接口方法上使用,因为这只有在使用基于接口的代理时它才会生效
所以尽量直接加在方法上

2、@Transactional注解应该只被应用到public方法上
这是由Spring AOP的本质决定的。如果你在protected、private或者默认可见性的方法上使用@Transactional注解将被忽略,但不会抛出任何异常。

3、源码学习

@Target({
   ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Transactional {
   

	/**
     * 当在配置文件中有多个 TransactionManager , 可以用该属性指定选择哪个事务管理器。
     */
	@AliasFor(
在Java Spring Boot中,@Transactional是一个注解,用于标记一个方法或类需要进行事务管理。事务是一组操作的逻辑单元,要么全部成功执行,要么全部回滚。使用@Transactional注解可以确保在方法执行期间,如果发生异常或错误,所有对数据库的操作都会回滚到事务开始之前的状态。 当我们在一个方法上添加@Transactional注解时,Spring会自动为该方法创建一个事务,并在方法执行之前开启事务,在方法执行之后根据方法的执行结果决定是提交事务还是回滚事务。如果方法执行成功,事务将会被提交,如果方法执行失败,事务将会被回滚。 除了在方法使用@Transactional注解,我们还可以将它应用于类级别。当我们在类级别上添加@Transactional注解时,该类中的所有方法都将被包装在一个事务中。 需要注意的是,@Transactional注解默认只对未检查异常(RuntimeException及其子类)进行回滚,对于检查异常(Exception及其子类)不会回滚。如果需要对检查异常进行回滚,可以使用@Transactional(rollbackFor = Exception.class)来指定回滚的异常类型。 另外,@Transactional注解还可以接收一些参数,用于配置事务的传播行为、隔离级别、超时时间等。例如,@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, timeout = 3600)。 总结一下,@Transactional注解是用于在Java Spring Boot中进行事务管理的注解,通过标记方法或类,可以确保一组操作要么全部成功执行,要么全部回滚。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值