我正在使用基于注释的声明式方法来处理spring aop。 示例代码交易的传播行为
ClassA{
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
add()
{
method1();
method2();
method3();
}
}
但我仍然怀疑在使用propagation.does的propagation.Requires_New意味着每个请求将开始新的事务。
第二个问题:
是否像方法2的任何方法的失败,方法3将导致事务回滚?
如果有人能帮助我倾向交易传播,我会非常高兴。
有人可以为我提供一个真实世界的例子,我们需要参与现有的事务。因为我想象上面例子中使用的add函数将独立于所有用户,或者任何其他函数都将独立于每个函数正在呼叫的用户。我无法找到使用其他传播行为(如PROPAGATION_SUPPORTS,PROPAGATION_MANDATORY,PROPAGATION_REQUIRES_NEW等)的示例
谢谢@ sean,我仍然无法获得其他传播行为,如PROPAGATION_SUPPORTS,PROPAGATION_MANDATORY,PROPAGATION_REQUIRES_NEW等等。请参考上面的整个问题 – Vish 2011-04-06 06:23:38
Thanks @ Sean.so如果多个请求都调用相同的方法说ADD(),REQUIRED注释会使它们在同一个事务中运行??但我认为所有的Add()方法调用都会在交易方面彼此独立..仍然有点混乱 – Vish 2011-04-06 11:21:17
@Vish不,从不。新的请求总是意味着在新线程中新的方法调用,因此是新的事务。所有这些事务性的东西都发生在一个方法调用中,即最外面的一个。当外部方法调用内部事务方法时,会变得棘手,但调用外部方法两次意味着两个事务,无论它是否在Web上下文中。 – 2011-04-06 13:19:19