java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Spring Transactional注解

Spring中Transactional注解使用的心得(推荐)

作者:pzistart

这篇文章主要介绍了Spring中Transactional注解使用的心得,事务是用来控制数据的ACID特性的,用于保证数据的正确性和完整性,需要的朋友可以参考下

事务特性

@Transactional注解是用于事务控制的,需要知道事务的ACID特征:即原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

事务是用来控制数据的ACID特性的,用于保证数据的正确性和完整性。

@Transactional注解有两种使用方式:

(1)标注在类上面:当作用于类上时,该类的所有public方法将都具有该类型的事务属性,同时,我们也可以在方法级别使用该标注来覆盖类级别的定义。

(2)标注在方法上面:当作用于方法上时,只有当该方法发生了异常才会进行回滚,其他的方法不受影响。

在项目中使用,@Transactional(rollbackFor=Exception.class),如果类加了这个注解,那么这个类里面的方法抛出异常,就会回滚,数据库里面的数据也会回滚。在@Transactional注解中如果不配置rollbackFor属性,那么事物只会在遇到RuntimeException的时候才会回滚,加上rollbackFor=Exception.class,可以让事物在遇到非运行时异常时也回滚。

今天看黑马redis的课,里面讲到了一个事务注解不生效的问题。

究其原因,就在于Spring中事务注解生效的条件。那么接下来就说一下自己的心得。

以下说一下例子吧

public class VoucherOrderServiceImpl implements IVoucherOrderService
    @Override
    public Result seckillVocher(Long voucherId) {
	IVoucherOrderService o = (IVoucherOrderService) AopContext.currentProxy();
        return o.secKill(voucherId);
	}


    @Override
    @Transactional
    public Result secKill(Long voucherId) {
	
	}
}

到此这篇关于Spring中Transactional注解使用的心得的文章就介绍到这了,更多相关Spring Transactional注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文