Готовим следующую карточку…
С подвохомСредняя
Вопрос
После создания заказа нужно отправить письмо только если транзакция успешно зафиксирована. Что произойдёт с обработчиком при откате и при успешном commit, а также в какой транзакционной фазе он запускается по умолчанию?
@Service
class OrderService {
@Transactional
void create() {
publisher.publishEvent(new OrderCreated(42L));
throw new IllegalStateException("rollback");
}
}
@Component
class MailNotifier {
@TransactionalEventListener
void send(OrderCreated event) {
mail.send(event.orderId());
}
}
record OrderCreated(Long orderId) {}
