spring-boot 15
- Stopping scheduled jobs from running twice during zero-downtime deploys with ShedLock
- Adding circuit breakers to internal service calls, and switching permission checks from fail-open to fail-closed
- Upgrading to Spring Boot 4, and finding out our LAZY was really EAGER because the entities were final
- A LiveKit call-ending race: when a REST leave and a webhook change the same state
- Why WebSockets quietly die in background tabs: four causes behind the same banner
- Getting entities out of the web app — splitting domain modules from API modules
- A locked_yn nobody ever set to true — computing the period lock from dates instead of a flag
- Building a transaction statement PDF with PDFBox — coordinates start at the bottom left
- If nothing gets deleted, don't call it delete — soft deletes with a status column
- When the same request hits several servers: a Redisson distributed lock behind one annotation
- Spring Boot 2.7 to 3.3 and Java 11 to 21, in two steps
- An N+1 that IN clauses couldn't fix: when @OneToOne lazy loading can't create a proxy
- One method per condition is too many: a cursor-paginated dynamic query in Querydsl
- From 22 queries to 3: replacing a per-user offer lookup with a Querydsl IN clause
- Checking for duplicate emails: findBy vs countBy vs existsBy on 50,000 rows