Spring Proxies Demystified: JDK Dynamic vs CGLIB — What Really Happens When You Add @Transactional

It was late on a Friday afternoon — the worst possible time for a production bug. A colleague called me over: “The transaction isn’t rolling back. I added @Transactional to the method but it’s still committing even when the exception is thrown.” He showed me the code. The annotation was there. The method was right. […]

Spring Proxies Demystified: JDK Dynamic vs CGLIB — What Really Happens When You Add @Transactional Read More »

The Transactional Outbox Pattern: Never Lose a Message Again

It was a Tuesday morning in production. An order had just been placed, the database row was committed, but the RabbitMQ message never arrived. The downstream service never processed it. The order sat there, forever in a “pending” state, and nobody knew why. Sound familiar? If you’ve worked on event-driven microservices long enough, you’ve probably

The Transactional Outbox Pattern: Never Lose a Message Again Read More »