Why Spring @Transactional Skips Checked Exceptions—and How to Ensure Proper Rollback
This article explains Spring's @Transactional default rollback behavior, why checked exceptions like IOException don't trigger a rollback, illustrates the resulting data inconsistency with a money‑transfer example, and shows how to fix the issue by explicitly configuring the rollbackFor attribute.
