通过上面对事物的说明,有编程经验的人应该都很清楚为什么需要失误了吧?那就是为了防止出现业务逻辑上的出错,如算错账转错钱等。
根据代理机制的不同,Spring事务的配置又有几种不同的方式:
第一种方式:每个Bean都有一个代理
第二种方式:所有Bean共享一个代理基类
第三种方式:使用拦截器
第四种方式:使用tx标签配置的拦截器
第五种方式:全注解
注意点:
1、Spring的事务边界是在调用业务方法之前开始的,业务方法执行完毕之后来执行commit 或者rollback,取决于是否抛出runtime异常。
事务传播行为类型 | 说明 |
---|---|
REQUIRED | 如果有事务在运行,当前的方法就在这个事务内运行;否则,就启动一个新的事务,并在自己的事务内运行; |
REQUIRES_NEW | 当前的方法必须启动新事务,并在它自己的事务内运行;如果有事务正在运行,应该将它挂起。 |
MANDATORY | 当前的方法必须运行在事务内部,如果没有正在运行的事务,将抛出异常。 |
SUPPORTS | 如果有事务在运行,当前的方法就在这个事务内运行;否则它可以不运行在事务中。 |
NOT_SUPPORTED | 当前的方法不应该运行在事务中,如果有运行的事务,将它挂起。 |
NEVER | 当前的方法不应该运行在事务中,如果有运行的事务,就抛出异常。 |
NESTED | 如果有事务在运行,当前的方法就应该在这个事务的嵌套事务内运行。否则,就启动一个新的事务,并在它自己的事务内运行。 |
https://www.jianshu.com/p/befc2d73e487