一、事务
1、简单简介: 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。
2、基本要素:原子性、一致性、隔离性、持久性
二、@Transactional
1、@Transactional注解可以作用于接口、接口方法、类以及类方法上
不建议在类上使用,因为作用于类上时,该类的所有public方法将都具有该类型的事务属性,不仅影响性能,而且每个方法可能需要不同的属性
不建议在接口或者接口方法上使用,因为这只有在使用基于接口的代理时它才会生效
所以尽量直接加在方法上
2、@Transactional注解应该只被应用到public方法上
这是由Spring AOP的本质决定的。如果你在protected、private或者默认可见性的方法上使用@Transactional注解将被忽略,但不会抛出任何异常。
3、源码学习
@Target({
ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Transactional {
/**
* 当在配置文件中有多个 TransactionManager , 可以用该属性指定选择哪个事务管理器。
*/
@AliasFor(