Spring支持两种类型的事务管理:
编程式事务管理: 通过编程的方式进行事务管理,可以带来极大的灵活性,但是难维护。
声明式事务管理: 声明式事务基于AOP,意味着具体业务代码与事务处理是分离开来的。声明式事务有两种方式,一是在配置文件(xml)中做相关的事务规则声明,一种是基于@Transactional注解的方式。
spring事务的传播行为说的是,当多个事务同时存在的时候,spring如何处理这些事务的行为。
7种类型的事务传播行为:
Spring的事务传播行为 | 说明 |
---|---|
PROPAGATION_REQUIRED | 如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。 |
PROPAGATION_SUPPORTS | 支持当前事务,如果当前存在事务就加入该事务,就加入该事务,如果当前不存在事务,就以非事务执行。 |
PROPAGATION_MANDATORY | 支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常 。 |
PROPAGATION_REQUIRES_NEW | 创建新事务,无论当前存不存在事务,都创建新事务。 |
PROPAGATION_NOT_SUPPORTED | 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 |
PROPAGATION_NEVER | 以非事务方式执行,如果当前存在事务,则抛出异常。 |
PROPAGATION_NESTED | 如果当前存在事务,则嵌套事务内执行,如果当前没有事务,则按REQUIRED属性执行 |