如果我有一个像这样声明的方法:
.xml
鉴于有两个并发交易,@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
public void afterTxCommit(MyObject myObject) {
....
}
和T1
以及T2
在T1
之前(稍微)结束:
T2
调用之前,afterTxCommit
会同步调用T1
吗?答案 0 :(得分:1)
synchronized
将确保该方法一次只能由一个线程执行,但是不能保证顺序:线程调度程序可能会选择在第一个事务的侦听器之前调用第二个事务的侦听器,即使第一个事务首先提交。我非常确定只需配置Spring就无法做到你想做的事。这听起来像是一种设计气味:如果两个并发事务是并发的,那么它们应该是独立的,并且顺序不重要。但是在不知道你想要实现的目标的情况下,很难提出具体的建议。