传播行为定义关于客户端和被调用方法的事务边界。spring定义了7种截然不同的传播行为。
读上述7种事务的一些说明如下。
第一种事务,mandatory
,表示强制的,即方法必须在一个事务中运行,否则,抛出异常。它要求必须处在一个封装事务里,且它自己不会开启新的事务。
第二种事务,nested
,嵌套的,它要求当前已经有一个封装事务了,且它自己会作为一个内部嵌套的事务来运行。如果当前没有封装事务,则它就不管外界了,自己启动一个事务来运行。
第三种事务,never
,不作为事务,自己不启动事务,且外界不能有事务。
第四种和第七种一起来看,supports
,表示该方法不需要事务上下文,但外界如果有事务的话,它也支持在一个外界事务里运行。not_supported,表示该方法不应在一个事务上下文里运行,如果外界有事务,那么就把外界事务挂起,在运行该方法。not_supported和never的区别在于,当外界有事务时,not_supported不会抛出异常。
第五种和第六种一起来看,required
表示当前方法必须在一个事务中运行,如果外界有事务,那么它就依赖于外界事务。如果外界没有事务,它就自己开启一个事务。required和nested的区别在于,当外界有事务时,nested会再创建一个事务,而required不创建新事务,只是在外界事务里运行。requires_new表示当前方法必须在自己的事务里运行。如果外界有事务,则把外界事务挂起。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对移动技术网的支持。如果你想了解更多相关内容请查看下面相关链接
如对本文有疑问, 点击进行留言回复!!
Java Class.forName()用法和newInstance()方法原理解析
网友评论