亲宝软件园·资讯

展开

Spring Transactional注解

pzistart 人气:0

事务特性

@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) {
	
	}
}

加载全部内容

相关教程
猜你喜欢
用户评论