@Spring Framework 4.2中从未调用TransactionalEventListener
我正在从Spring4.2实现@Spring Framework 4.2中从未调用TransactionalEventListener,spring,event-listener,transactional,Spring,Event Listener,Transactional,我正在从Spring4.2实现@EventListener,它运行良好。当我尝试实现@TransactionalEventListener时,它从未被调用 ApplicationListenerMethodTransactionalAdapter进行检查: if(TransactionSynchronizationManager.isSynchronizationActive()) 而且它总是false,因此它跳过运行事件,因为它说它不在事务中 事件侦听器的代码很简单: @Transactio
@EventListener
,它运行良好。当我尝试实现@TransactionalEventListener
时,它从未被调用
ApplicationListenerMethodTransactionalAdapter进行检查:
if(TransactionSynchronizationManager.isSynchronizationActive())
而且它总是false,因此它跳过运行事件,因为它说它不在事务中
事件侦听器的代码很简单:
@TransactionalEventListener()
public void handleTransactionalAddEvent(Event event)
{
logger.info("Add Event: {}");
}
发布事件的代码如下所示:
@Override
@Transactional
public Order addToOrder(String username, Long orderId)
{
Order order = getOrder(orderId, username);
publisher.publishEvent(new Event(order, Event.EventType.ADD));
... Code to do stuff to the order ...
updateOrder(order);
return order;
}
如果我将
@TransactionEventListener
更改为@EventListener
,或者添加fallbackExecution
属性,它将正常运行,但是使用@TransactionEventListener
它永远不会被调用。我发现我们有一个自定义的ApplicationEventMulticaster,它与事务事件侦听器冲突。我删除了它,现在它工作正常。我发现我们有一个自定义的ApplicationEventMulticaster,它与事务事件侦听器冲突。我删除了它,现在它工作正常。@TransactionalEventListener在其方法应该在事务中时使用。
如果没有运行任何事务,则根本不会调用侦听器,因为我们无法遵守所需的语义。@TransactionalEventListener在其方法应在事务中时使用。
如果没有运行任何事务,则根本不会调用侦听器,因为我们无法遵守所需的语义。试试Spring JIRA,4.2甚至不是里程碑或发布候选版本,它只生成快照,因此可能会出现问题。另外,你确定你的事务设置正确吗?试试Spring JIRA,4.2甚至不是一个里程碑,也不是一个仅适用于发布候选版本的构建快照,因此它们可能会出现问题。此外,您是否确定您的事务设置正确。