首页 > 代码库 > propagation属性的7个传播行为

propagation属性的7个传播行为

关于propagation属性的7个传播行为 
REQUIRED:指定当前方法必需在事务环境中运行,如果当前有事务环境就加入当前正在执行的事务环境,如果当前没有事务,就新建一个事务。这是默认值。即有事务就在事务中执行,没有就新建一个事务 
SUPPORTS:指定当前方法加入当前事务环境,如果当前没有事务,就以非事务方式执行。即有无事务无所谓。 
MANDATORY:指定当前方法必须加入当前事务环境,如果当前没有事务,就抛出异常。 即没有事务绝对不行。
REQUIRES_NEW:指定当前方法总是会为自己发起一个新的事务,如果发现当前方法已运行在一个事务中,则原有事务被挂起,我自己创建一个属于自己的事务,直我自己这个方法commit结束,原先的事务才会恢复执行。 即有事务也得新建一个事务。
NOT_SUPPORTED:指定当前方法以非事务方式执行操作,如果当前存在事务,就把当前事务挂起,等我以非事务的状态运行完,再继续原来的事务。 即必须以非事务运行。
NEVER:指定当前方法绝对不能在事务范围内执行,如果方法在某个事务范围内执行,容器就抛异常,只有没关联到事务,才正常执行。 即绝对不能再事务中运行。
NESTED:指定当前方法执行时,如果已经有一个事务存在,则运行在这个嵌套的事务中.如果当前环境没有运行的事务,就新建一个事务,并与父事务相互独立,这个事务拥有多个可以回滚的保证点。就是指我自己内部事务回滚不会对外部事务造成影响,只对DataSourceTransactionManager事务管理器起效。 即内部事务独立执行。