Spring Reactive事件和事务上下文

时间:2018-05-06 14:04:26

标签: spring project-reactor

我正在将一个现有的应用程序从Spring MVC传统模型迁移到Spring Reactive。我的第一个重构让我用这段代码:

return Mono.fromSupplier(() -> visitRequestDao.findById(requestId).get())
            .map(request ->  request.approve())
            .map(request -> ResponseEntity.ok(listOfPendingVisitRequest(owner)));

执行端点后,我注意到我的实体没有更改状态。作为一个Hibernate用户,我知道当我加载一些对象时,所应用的任何更改都将在提交后反映在数据库中。我的猜测是事件是在另一个线程中执行的。我稍微更改了代码。

return Mono.fromSupplier(() -> visitRequestDao.findById(requestId).get())
            .map(request -> transactionalContext.execute(() -> request.approve()))
            .map(request -> ResponseEntity.ok(listOfPendingVisitRequest(owner)))

创建了一个类TransactionalContext并将其标记为事务性。所以,现在我知道,无论何时调用它的方法,都将启动一个新的事务或使用当前的事务。这是正确的方法吗?有没有解决方案?

0 个答案:

没有答案