源码:

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Transactional {
    @AliasFor("transactionManager")
    String value() default "";
 
    @AliasFor("value")
    String transactionManager() default "";
 
    String[] label() default {};
 
    Propagation propagation() default Propagation.REQUIRED;
 
    Isolation isolation() default Isolation.DEFAULT;
 
    int timeout() default -1;
 
    String timeoutString() default "";
 
    boolean readOnly() default false;
 
    Class<? extends Throwable>[] rollbackFor() default {};
 
    String[] rollbackForClassName() default {};
 
    Class<? extends Throwable>[] noRollbackFor() default {};
 
    String[] noRollbackForClassName() default {};
}
  • transactionManager:指定事务管理器
  • propagation:事务传播规则,一个事务可以包括N个子事务
  • isolation:事务隔离级别,不多说了
  • timeout:事务超时时间
  • readOnly:是否为只读事务,不同的数据库会根据只读属性进行优化,比如MySQL一旦声明事务为只读,那么久不允许增删改操作了。
  • rollbackFor和noRollbackFor:发生指定异常时回滚或是不回滚,默认发生任何异常都回滚。