Spring 中有编程式事务和声明式事务,其中声明式事务时一种约定型的事务,其保证在代码发生异常时可以进行回滚,从而保证数据的一致性。
声明式事务可以使用 @Transaction 注解来进行配置,其配置项有以下几项,分别是:value、transactionManager、isolation、propagation、timeout、readOnly、rollbackFor、roolbackForClassName、noRollbackFor 和 noRollbackForClassName。
其中,最重要的是 isolation 和 propagation,前者是事务隔离级别,后者是事务传播。
其余的 timeout 表示超时时间,当发生超时时,会引发异常;rollbackFor 是回滚异常类;noRollbackFor 是不回滚异常类;readOnly 表示只读型事务。