【发布时间】:2022-01-20 08:20:21
【问题描述】:
我有一个 Spring Boot 应用程序,其中一个服务负责创建一个业务实体。为简单起见,让我们考虑:
create(Object toCreate) {
validationService.validate(toCreate);
Object created = repository.save(toCreate);
notificationService.notify(created);
}
业务发生了变化,现在我希望创建如果通知失败也不会失败。
因此,我将notify() 方法包装在一个仅记录错误的try-catch 块中(即RuntimeException)。
但是,在测试时,抛出了事务回滚错误,表示连接已关闭。我不希望任何回滚,尤其是因为 NotificationService 不会修改数据库。
我如何告诉 Spring 在 NotificationService 中发生的任何异常都很好并且不需要回滚?我尝试用@Transactional(propagation=NEVER) 注释类/方法,但得到existing transaction found for transaction marked with propagation 'never'
【问题讨论】:
标签: spring spring-boot spring-transactions