事务分为编程式事务和声明式事务两种。编程式事务指在代码中手动的管理事务的提交、回滚等操作,代码侵入性比较强。声明式事务是基于 AOP 面向切面的,它将具体业务与事务处理部分解耦,代码侵入性很低,声明式事务也有两种实现方式,一种是基于 TX 和 AOP 的 xml 配置文件方式,二种就是基于 @Transactional 注解了,实际开发中 @Transactional 用的比较多。
1、@Transactional只能用于public方法,private、protected方法都会失效,但不会报错
2、rollbackfor
默认是Error和RuntimeException,如果抛其他异常,则不会进行回滚
3、propagation
传播特性主要用到了Propagation.REQUIRED、Propagation.REQUIRES_NEW两个,Propagation.REQUIRES_NEW会新创建一个事务,不会受到前面事务的影响